ANN: PyQwt-5.0.0 released
What is PyQwt ( http://pyqwt.sourceforge.net ) ? - it is a set of Python bindings for the Qwt C++ class library which extends the Qt framework with widgets for scientific and engineering applications. It provides a widget to plot 2-dimensional data and various widgets to display and control bounded or unbounded floating point values. - it requires and extends PyQt, a set of Python bindings for Qt. - it supports the use of PyQt, Qt, Qwt, and optionally NumPy or SciPy in a GUI Python application or in an interactive Python session. - it runs on POSIX, Mac OS X and Windows platforms (practically any platform supported by Qt and Python). - it plots fast: displaying data with 100,000 points takes about 0.1 s. - it is licensed under the GPL with an exception to allow dynamic linking with non-free releases of Qt and PyQt. PyQwt-5.0.0 is a major release with support for Qt-4.x, many API changes compared to PyQwt-4.2.x, and a NSIS Windows installer. PyQwt-5.0.0 supports: 1. Python-2.5, -2.4 or -2.3. 2. PyQt-3.18 (to be released in April 2007), or PyQt-3.17. 3. PyQt-4.2 (to be released in April 2007), or PyQt-4.1.x. 3 SIP-4.6 (to be released in April 2007), or SIP-4.5.x. 4. Qt-3.3.x, or -3.2.x. 5. Qt-4.2.x, or -4.1.x. 6. Recent versions of NumPy, numarray, and/or Numeric. Enjoy -- Gerard Vermeulen -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
ANN: Next NYC Python User Group meeting, Tues May 8th, 2007, 6:30 pm
My apologies for the comical timing of the below announcement - I actually sent the announcement on April 4th, but it obviously didn't clear the moderator's desk in time for the meeting mentioned below. In an attempt to avoid this same problem, let me announce next month's meeting now. The next New York City Python Users Group meeting is Tuesday, May 8th from 6:30-8:30pm at the Millenium Partners office at 666 Fifth Avenue (53rd St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who are interested in Python to attend. However, we need a list of first and last names to give to building security to make sure you can gain access to the building. RSVP to [EMAIL PROTECTED] to add your name to the list. More information can be found on the yahoo group page: http://tech.groups.yahoo.com/group/nycpython Hope to see you there! -John _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of John Clark Sent: Wednesday, April 04, 2007 3:46 PM To: python-list@python.org; [EMAIL PROTECTED]; tutor@python.org Subject: New York City Python Users Group Meeting Greetings! The next New York City Python Users Group meeting is this Tuesday, April 10th, 6:30pm at at the Millennium Partners office at 666 Fifth Avenue (53rd St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who are interested in Python to attend. However, we need a list of first and last names to give to building security to make sure you can gain access to the building. RSVP to [EMAIL PROTECTED] to add your name to the list. More information can be found on the yahoo group page: http://tech.groups.yahoo.com/group/nycpython/ http://tech.groups.yahoo.com/group/nycpython/ Hope to see you there! -John -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
RELEASED Python 2.5.1, release candidate 1
On behalf of the Python development team and the Python community, I'm happy to announce the release of Python 2.5.1 (release candidate 1). This is the first bugfix release of Python 2.5. Python 2.5 is now in bugfix-only mode; no new features are being added. According to the release notes, over 150 bugs and patches have been addressed since Python 2.5, including a fair number in the new AST compiler (an internal implementation detail of the Python interpreter). For more information on Python 2.5.1, including download links for various platforms, release notes, and known issues, please see: http://www.python.org/2.5.1/ Highlights of this new release include: Bug fixes. According to the release notes, at least 150 have been fixed. Highlights of the previous major Python release (2.5) are available from the Python 2.5 page, at http://www.python.org/2.5/highlights.html Enjoy this release, Anthony Anthony Baxter [EMAIL PROTECTED] Python Release Manager (on behalf of the entire python-dev team) -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
ANN: pywinauto 0.3.7 now released
Hi, 0.3.7 release of pywinauto is now available. pywinauto is an open-source (LGPL) package for using Python as a GUI automation 'driver' for Windows NT based Operating Systems (NT/W2K/XP/Vista?). SourceForge project page: http://sourceforge.net/projects/pywinauto Download from SourceForge http://sourceforge.net/project/showfiles.php?group_id=157379 Here is the list of changes from the previous release (0.3.6): 0.3.7 Merge of Wait changes and various bug fixes/improvements -- 10-April-2007 * Added Timings.WaitUntil() and Timings.WaitUntilPasses() which handle the various wait until something in the code. Also refactored existing waits to use these two methods. * Fixed a major Handle leak in RemoteMemorBlock class (which is used extensively for 'Common' controls. I was using OpenHandle to open the process handle, but was not calling CloseHandle() for each corresponding OpenHandle(). * Added an active_() method to Application class to return the active window of the application. * Added an 'active' option to WindowSpecification.Wait() and WaitNot(). * Some cleanup of the clipboard module. GetFormatName() was improved and GetData() made a little more robust. * Added an option to findwindows.find_windows() to find only active windows (e.g. active_only = True). Default is False. * Fixed a bug in the timings.Timings class - timing values are Now accessed through the class (Timings) and not through the intance (self). * Updated ElementTree import in XMLHelpers so that it would work on Python 2.5 (where elementtree is a standard module) as well as other versions where ElementTree is a separate module. * Enhanced Item selection for ListViews, TreeViews - it is now possible to pass strings and they will be searched for. More documentation is required though. * Greatly enhanced Toolbar button clicking, selection, etc. Though more documentation is required. * Added option to ClickInput() to allow mouse wheel movements to be made. * menuwrapper.Menu.GetProperties() now returns a dict like all other GetProperties() methods. This dict for now only has one key 'MenuItems' which contains the list of menuitems (which had been the previous return value). Thanks Mark Mark Mc Mahon Manchester, NH 03110, USA PA HREF=http://sourceforge.net/projects/pywinauto;pywinauto 0.3.7/A Simple Windows GUI automation with Python. (10-Apr-07) -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
[ANN] Business Gauges 1.1.5 - a Python-powered Business Intelligence Dashboard Solution
We're happy to announce the release of Business Gauges 1.1.5. A trial version is available for download from: http://www.businessgauges.com/download/ Business Gauges is a Python-powered business intelligence dashboard solution that uses desktop gadgets and programmable sensors to monitor business metrics. Business Gauges comes pre-packaged with integrated Python scripting support. Solution developers and system integrators can use Python together with Business Gauges to create customized executive dashboards for their clients. Programming data sensors using Python scripts is made easier using an integrated Python editor, built into the Business Gauges management console. Business Gauges is available for Windows XP, Windows Server 2003 and Windows Vista. To learn more about Business Gauges, please visit: http://www.businessgauges.com. Feature Highlights: - Intuitive Desktop Dashboard - Programmable Data Sensors - Python Scripted Sensors - SQL Sensors - Web Page Sensors - Asynchronous Sensors - Integrated Users and Permissions management - Low Resources Consumption Changes from last version: - Improved auto-hide mode. - New menu allows to quickly change between configurations when the dashboard is minimized to tray. - Pressing CTRL+WIN will now show hidden gauges until the WIN key is released. - Trailing zeros in numerical displays are now dimmed for improved readability. - Improved gauges rendering performance. - Improved performance when using the dashboard to search for gauges in the service. - Line chart gauges will not display any value when the sensor is disabled. - Improved rendering of the minimum and maximum indications in line chart gauges. - Desktop can now be dimmed when gauges are shown in auto-hide mode. - Other minor bug fixes. Sincerely, The Happy Business Gauges' Pythonians http://www.businessgauges.com -- http://mail.python.org/mailman/listinfo/python-announce-list Support the Python Software Foundation: http://www.python.org/psf/donations.html
Re: Does python have the static function member like C++
On Apr 11, 5:19 am, 7stud [EMAIL PROTECTED] wrote: On Apr 10, 9:08 pm, 人言落日是天涯,望极天涯不见家 [EMAIL PROTECTED] wrote: I define the class like this: class AAA: counter = 0 def __init__(self): pass def counter_increase(): AAA.counter += 1 print couter now :, AAA.counter But how could I call the function counter_incrrease ? Thanks ! 1) class AAA: counter = 0 def __init__(self): pass @staticmethod def counter_increase(): AAA.counter += 1 print couter now :, AAA.counter AAA.counter_increase() 2) class AAA: counter = 0 def __init__(self): pass def counter_increase(): AAA.counter += 1 print couter now :, AAA.counter counter_increase = staticmethod(counter_increase) AAA.counter_increase() 3) class AAA: counter = 0 def __init__(self): pass def counter_increase(self): AAA.counter += 1 print couter now :, AAA.counter aaa = AAA() AAA.counter_increase(aaa) 1. In this case you will prefer a classmethod instead a staticmethod. 2. If counter is the number of instances of class AAA then you will incrase counter inside __init__ method. class AAA (object): counter = 0 def __init__(self): type(self).counter_increase() @classmethod def counter_increase(cls): cls.counter += 1 or class AAA (object): counter = 0 def __init__(self): type(self).counter += 1 -- http://mail.python.org/mailman/listinfo/python-list
Re: __file__
En Tue, 10 Apr 2007 21:20:51 -0300, 7stud [EMAIL PROTECTED] escribió: I'm having trouble understanding what the definition of __file__ is. With this program: -- #data.py: def show(): print __file__ if __name__ == __main__: show() --- if I run data.py with the prompt pointing to the directory that contains data.py, then __file__ produces a filename: data.py [cut: other examples showing different paths to data.py] __file__ corresponds to the filename used to locate and load the module, whatever it is. When the module is found on the current directory (corresponding to '' in sys.path), you get just the filename; if sys.path contains a relative path, that's what you get; the same for any absolute path. Whatever path worked to find and load the module, that's stored as __file__. If you plan to use it, it's a good idea to make it early into an absolute path (using os.path.abspath(__file__)) just in case the current directory changes. And some modules have __file__ in their __dict__ and some don't: pprint.pprint(sys.__dict__) sys is a builtin module: no sys.py/sys.pyc exists, so __file__ is meaningless. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Does python have the static function member like C++
人言落日是天涯,望极天涯不见家 a écrit : I define the class like this: class AAA: counter = 0 def __init__(self): pass def counter_increase(): AAA.counter += 1 print couter now :, AAA.counter You probably want something like this: class AAA(object): _counter = 0 @classmethod def increase_counter(cls): cls._counter += 1 print %s._counter is now %d % (cls.__name__, cls._counter) But how could I call the function counter_incrrease ? With the above correction, you can call it eiter on the class or on an instance: AAA.increase_counter() aaa = AAA() aaa.increase_counter() HTH -- http://mail.python.org/mailman/listinfo/python-list
Re: Universal Feed Parser issue
En Wed, 11 Apr 2007 01:51:13 -0300, i3dmaster [EMAIL PROTECTED] escribió: On Apr 10, 6:45 pm, Gabriel Genellina [EMAIL PROTECTED] wrote: En Tue, 10 Apr 2007 14:58:42 -0300, i3dmaster [EMAIL PROTECTED] escribió: ?xml version='1.0' encoding='utf-8'? feed xmlns='http://www.w3.org/2005/Atom'xmlns:foo='http:// app.example.com/app/2007' ... foo:timezone value='America/Mountain'/foo:timezone foo:status value='confirmed'/foo:status /feed After parsed by feedparser, the timezone element does not get the attribute America/Mountain. Same thing on status element. This does not sound an expected result. I am wondering if it should be considered a bug... Usually it's a good idea to read the documentation... http://www.feedparser.org/docs/namespace-handling.html I did. Perhaps its because of not 100% atom compatible of my feed format? See if I use gnosis xml utility to parse it, it works fine though... The link above answers *exactly* your question - have you actually read the page? -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
Re: Does python have the static function member like C++
goodwolf a écrit : (snip) 1. In this case you will prefer a classmethod instead a staticmethod. 2. If counter is the number of instances of class AAA then you will incrase counter inside __init__ method. class AAA (object): counter = 0 def __init__(self): type(self).counter_increase() You can call a class method on an instance: self.counter_increase() And FWIW, this is probably something I'd put in the constructor (the __new__ method), not in the initializer. @classmethod def counter_increase(cls): cls.counter += 1 or class AAA (object): counter = 0 def __init__(self): type(self).counter += 1 Instances have a reference to their class, so you can also write this: self.__class__.counter += 1 -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
Carsten Haese [EMAIL PROTECTED] wrote: I'm just a user with no influence on the development of Python itself, but in my humble opinion, the non-existence of tuple.index is more pythonic than its existence would be. I really cannot follow the logic behind this statement. I can write: L = [a,b,c,d,e,f] T= (a,b,c,d,e,f) The difference between the two things is that I can add to and change L, but not T. Now it seems to me that whatever argument is used to justify the existence of: n = L.index(d) can be used to justify the existence of: n = T.index(d) and vice versa. Cut down to these basics, it seems to me that the arguments against the latter construct are simply knee jerk reactions to preserve the status quo. If an index method for tuples is such a very bad thing, then the same arguments can be used to justify the removal of the list index method from the language. I happen to agree with Antoon - there is a LOT of merit in consistency, as it makes things easy to learn and remember. And I would heretically go even further, and argue that it should be possible to write stuff like: T = T.append(x) And get back a new tuple bound to the old name... - Hendrik -- http://mail.python.org/mailman/listinfo/python-list
Re: Does python have the static function member like C++
On Apr 11, 9:09 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: goodwolf a écrit : (snip) 1. In this case you will prefer a classmethod instead a staticmethod. 2. If counter is the number of instances of class AAA then you will incrase counter inside __init__ method. class AAA (object): counter = 0 def __init__(self): type(self).counter_increase() You can call a class method on an instance: self.counter_increase() And FWIW, this is probably something I'd put in the constructor (the __new__ method), not in the initializer. @classmethod def counter_increase(cls): cls.counter += 1 or class AAA (object): counter = 0 def __init__(self): type(self).counter += 1 Instances have a reference to their class, so you can also write this: self.__class__.counter += 1 OK, you will use something like this: class AAA (object): counter = 0 def __new__(cls): cls.counter += 1 return super(cls, cls).__new__(cls) but I think that __new__ is more low level and not necessary here, so I will use: class AAA (object): counter = 0 def __init__(self): self.counter_increase() @classmethod def counter_increase(cls): cls.counter += 1 with yours correction invoking self.counter_increase() instead of more explicit type(self).counter_increase() -- http://mail.python.org/mailman/listinfo/python-list
Calling Python from Javascript?
I know that there's some work out there to let Python make use of Javascript (Spidermonkey) via (I assume) some sort of bridging C/C++ code. Anyone know of efforts to allow the reverse? I'd really like to make use of Python when doing Mozilla DOM programming, and I can never get a clear idea of when PyXPCOM might be available to those of us who don't know the ins and outs of compiling Mozilla, and its XPCOM structures. So if there was an easy way to simply and quickly pass even just strings back and forth between Python and Moz Javascript, that would make certain things a heck of a lot easier. Thanks, Ken -- http://mail.python.org/mailman/listinfo/python-list
Re: About Trolltech QT OpenSource license.
king kikapu wrote: As i said, i do not fully understand all this license stuff. All i want to ask is, i can make GPL software and gain money from this ? And if that so, then why they force you to buy the commercial lisence in such case ? Others have given good answers. I would only like to clarify what I think is the source of confusion here. While the FSF and many open source advocates make a distinction between the words commercial (meaning that someone derives money from distributing the software, whether it is GPLed or not) and proprietary (meaning that the software is not being distributed under an open source license but one that restricts user's rights), Trolltech abuses the term commercial to mean proprietary in this case. If you obey the terms of the GPL and still manage to derive money from it, you don't need Trolltech's commercial license. Just be sure that you do obey the terms of the GPL; it's not entirely trivial to build a business model around it. Such a business will be somewhat different from one that uses proprietary licenses. -- Robert Kern I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth. -- Umberto Eco -- http://mail.python.org/mailman/listinfo/python-list
No zlib in Python 2.4.4
Hi, I've compiled (configure/make/make install) Python 2.4.4 from source on Suse Linux Enterprise Server 9 (x64). I need Python to be compiled with Zlib so that I can compile and use Zope. After installing Python, zlib doesn't seem to have been compiled with it, I've checked the /usr/local/lib/python2.4/lib-dynload/ folder and there is no zlib.so in there. Shouldn't zlib be compiled as a Python module automatically in Python 2.4.4. I'm guessing Python is doing some kind of check and not compiling zlib for some reason? Any help would be appreciated. Thanks, Shams -- http://mail.python.org/mailman/listinfo/python-list
Re: Does python have the static function member like C++
goodwolf a écrit : On Apr 11, 9:09 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: goodwolf a écrit : (snip) 1. In this case you will prefer a classmethod instead a staticmethod. 2. If counter is the number of instances of class AAA then you will incrase counter inside __init__ method. class AAA (object): counter = 0 def __init__(self): type(self).counter_increase() You can call a class method on an instance: self.counter_increase() And FWIW, this is probably something I'd put in the constructor (the __new__ method), not in the initializer. @classmethod def counter_increase(cls): cls.counter += 1 or class AAA (object): counter = 0 def __init__(self): type(self).counter += 1 Instances have a reference to their class, so you can also write this: self.__class__.counter += 1 OK, you will use something like this: class AAA (object): counter = 0 def __new__(cls): cls.counter += 1 return super(cls, cls).__new__(cls) return super(AAA, cls).__new__(cls) but I think that __new__ is more low level and not necessary here, It's of course 'not necessary'. But (IMHO): - increasing the class's instance counter is more a responsability of the class than a responsability of the instance - and it has nothing to do with initializing the instance's state - if someone is to subclass AAA, there are fewer chances that he'll override the constructer than the initializer, and if he does, there are more chances that he won't forget to call on the parent's constructor. IOW, this is actually *because* it is 'lower level' that I think it's a better place for such operations. But YMMV, of course !-) My 2 cents... -- http://mail.python.org/mailman/listinfo/python-list
Re: No zlib in Python 2.4.4
In [EMAIL PROTECTED], shamzz wrote: Shouldn't zlib be compiled as a Python module automatically in Python 2.4.4. I'm guessing Python is doing some kind of check and not compiling zlib for some reason? It only gets compiled if the header files can be found. Is the zlib-dev or zlib-devel package installed? Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: Calling Python from Javascript?
On Apr 11, 1:50 am, Kenneth McDonald [EMAIL PROTECTED] wrote: I know that there's some work out there to let Python make use of Javascript (Spidermonkey) via (I assume) some sort of bridging C/C++ code. Anyone know of efforts to allow the reverse? I'd really like to make use of Python when doing Mozilla DOM programming, and I can never get a clear idea of when PyXPCOM might be available to those of us who don't know the ins and outs of compiling Mozilla, and its XPCOM structures. So if there was an easy way to simply and quickly pass even just strings back and forth between Python and Moz Javascript, that would make certain things a heck of a lot easier. Thanks, Ken Javascript can make requests to the server, and far as I know python can be used with either cgi or apache to respond to server requests. Therefore, javascript can easily pass strings to a server side python script, and it can easily handle data sent back that is formatted as a string, XML, or JSON. I'm not sure what PyXPCOM is or why it's relevant. -- http://mail.python.org/mailman/listinfo/python-list
Re: No zlib in Python 2.4.4
I need Python to be compiled with Zlib so that I can compile and use Zope. I am guessing you need zlib_dev.rpm (or somesuch) installed for the python build process to find the relevant headers. Sorry I cannot be more specific not being a SuSE user myself (anymore)... Bernard. -- http://mail.python.org/mailman/listinfo/python-list
Re: Does python have the static function member like C++
On Apr 11, 10:15 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: goodwolf a écrit : On Apr 11, 9:09 am, Bruno Desthuilliers bruno. [EMAIL PROTECTED] wrote: goodwolf a écrit : (snip) 1. In this case you will prefer a classmethod instead a staticmethod. 2. If counter is the number of instances of class AAA then you will incrase counter inside __init__ method. class AAA (object): counter = 0 def __init__(self): type(self).counter_increase() You can call a class method on an instance: self.counter_increase() And FWIW, this is probably something I'd put in the constructor (the __new__ method), not in the initializer. @classmethod def counter_increase(cls): cls.counter += 1 or class AAA (object): counter = 0 def __init__(self): type(self).counter += 1 Instances have a reference to their class, so you can also write this: self.__class__.counter += 1 OK, you will use something like this: class AAA (object): counter = 0 def __new__(cls): cls.counter += 1 return super(cls, cls).__new__(cls) return super(AAA, cls).__new__(cls) but I think that __new__ is more low level and not necessary here, It's of course 'not necessary'. But (IMHO): - increasing the class's instance counter is more a responsability of the class than a responsability of the instance - and it has nothing to do with initializing the instance's state - if someone is to subclass AAA, there are fewer chances that he'll override the constructer than the initializer, and if he does, there are more chances that he won't forget to call on the parent's constructor. IOW, this is actually *because* it is 'lower level' that I think it's a better place for such operations. But YMMV, of course !-) My 2 cents... OK, but then you will use an more flexible constructor: class AAA (object): counter = 0 def __new__(cls, *args, **kwargs): cls.counter += 1 return super(AAA, cls).__new__(cls, *args, **kwargs) then you see that you will pay lot resources for a lower level operation. However if your counter is to consider a low level think, than You are right, but it's more a personal consideration. -- http://mail.python.org/mailman/listinfo/python-list
Re: installing pyqt4 on ubuntu 6.06
On 10 Apr, 20:48, Joshua J. Kugler [EMAIL PROTECTED] wrote: On Tuesday 10 April 2007 07:35, Pradnyesh Sawant wrote: Any pointers regarding what packages should i install to get the system into working condition would be very helpful It's next to impossible, due to conflicts with SIP, and other dependencies. See these two threads (both started by me) for more information: http://ubuntuforums.org/showthread.php?t=243936 http://ubuntuforums.org/showthread.php?t=244612 Yes, so much for cutting edge packages in the bleeding edge Ubuntu releases. Anyway, I've previously made PyQt4 packages for Ubuntu Hoary based on the Debian (and possibly Ubuntu) sources plus diffs, and as far as I remember you just need to choose a version of SIP which is capable of working with both the PyQt3 and PyQt4 sources. I think I also had to upgrade my PyQt3 stuff in the process, but since the stuff shipped with Hoary is almost archaic, that was on the cards, anyway. Sadly, you'll probably get into issues with the various applications which need PyQt3, and it might be necessary to rebuild them. I'd provide some details of what I've done, but they aren't currently to hand, so I'll try and post some more information at a later time. Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: No zlib in Python 2.4.4
On Apr 11, 9:14 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: In [EMAIL PROTECTED], shamzz wrote: Shouldn't zlib be compiled as a Python module automatically in Python 2.4.4. I'm guessing Python is doing some kind of check and not compiling zlib for some reason? It only gets compiled if the header files can be found. Is the zlib-dev or zlib-devel package installed? Thanks for the fast reply... this seems to be going off topic from Python so sorry about that. But yep, I've just installed (through YAST) the zlib-devel and zlib- devel-32 packages (zlib and zlib-32bit are already installed). I then did a make clean/configure/make/make install with the Python source, but it's still not compiling with zlib. I've downloaded the latest (source) version of zlib 1.2.3, is it possible to manually compile it from the zlib source into Python? Thanks for your help, Shams. -- http://mail.python.org/mailman/listinfo/python-list
Re: IPython 0.8.0 is out
On Apr 11, 6:18 am, Fernando Perez [EMAIL PROTECTED] wrote: Hi all, The IPython team is happy to release version 0.8.0, with a lot of new enhancements, as well as many bug fixes. We hope you all enjoy it, and please report any problems as usual. WHAT is IPython? 1. An interactive shell superior to Python's default. IPython has many features for object introspection, system shell access, and its own special command system for adding functionality when working interactively. 2. An embeddable, ready to use interpreter for your own programs. IPython can be started with a single call from inside another program, providing access to the current namespace. 3. A flexible framework which can be used as the base environment for other systems with Python as the underlying language. 4. A shell for interactive usage of threaded graphical toolkits. IPython has support for interactive, non-blocking control of GTK, Qt and WX applications via special threading flags. The normal Python shell can only do this for Tkinter applications. Where to get it --- IPython's homepage is at: http://ipython.scipy.org and downloads are at: http://ipython.scipy.org/dist We've provided: - Source download (.tar.gz) - A Python Egg (http://peak.telecommunity.com/DevCenter/PythonEggs). - A python 2.4 RPM. - A native win32 installer. The egg is 'light', as it doesn't include documentation and other ancillary data. If you want a full ipython installation, use the source tarball or your distribution's favorite system. We note that IPython is now officially part of most major Linux and BSD distributions, so packages for this version should be coming soon, as the respective maintainers have the time to follow their packaging procedures. Many thanks to the distribution packagers for their work, which helps users get IPython more conveniently. Thanks to all the users who contributed bug reports, ideas and especially patches. The ChangeLog has hopefully detailed acknowledgements, but please let us know if we've accidentally ommitted giving you due credit. Many thanks to Enthought for their continued hosting support for IPython. Release notes - As always, the full ChangeLog is athttp://ipython.scipy.org/ChangeLog. The highlights of this release follow. Also see the What's New page at http://ipython.scipy.org/moin/WhatsNew * Support for KeyboardInterrupt (Ctrl-C) when running in multithreaded mode with GUI support. This had been a long-requested feature that we had never quite been able to implement correctly. Many thanks to Tomer Filiba's for his ctypes-based trick:http://sebulba.wikispaces.com/recipe+thread2, which we used (any implementation mistakes are our own and not his fault). Users of Python 2.4 should note that they need to install ctypes separately to access this feature; ctypes is part of Python 2.5 already. * Fully syntax-highlighted tracebacks and debugger listings. IPython used to color tracebacks, but only certain elements; now the source is actually highlighted by the same engine that handles '??' source listings, both in tracebacks and during interactive debugging. * Improved the ipipe system:http://ipython.scipy.org/moin/UsingIPipe, including a new WX-based graphical browser. * Much improved unicode support. There may still be bugs remaining, but a number of known-incorrect cases have been fixed. * Make the execution of 'from pylab import *' when -pylab is given be otional. A new flag (which can be set in your ipythonrc file), pylab_import_all controls this behavior, the default is True for backwards compatibility. * Extensions for perforce support via a new magic (%p4) and custom command completers. * Improved support for (X)Emacs under win32. * Several small fixes and improvements to the interactive demo module. * Add \N for the actual prompt number, without any coloring, as an escape for customized prompt definitions. This lets users write their own custom prompts with arbitrary coloring schemes. * Many more bugfixes and small features everywhere (the ChangeLog linked above has the gory details). API changes: * genutils.clock() now returns user+system time. The new clocku/clocks functions return respectively user and system time only. Enjoy, and as usual please report any problems. The IPython team. Just made a connection between the IPipe feature and Windows PowerShell http://en.wikipedia.org/wiki/PowerShell I can't find the link to the orignial PowerShell article but I do remember them talking about sending objects rather than text through pipes (as Unix does); and that their was a default printing format for objects coming out of a pipeline. -- http://mail.python.org/mailman/listinfo/python-list
THREADS use 100 % CPU all the time
Hi all, I have a application where I use different threads. actually all is working - BUT I just discovered that the [b]CPU is always 100 % [/ b]used. on the 32-bit machine athlon XP, as well as on the amd 64-bit AMD Athlon(TM) 64 X2 Dual-Core. I have to admit I'm not used to threads. I actually use a thirdparty scheduler [url]http://www.webwareforpython.org/TaskKit/Docs/Source/ Docs/TaskKit.Scheduler.html[/url] but I checked and a very simple exampe with threading gives me also all the time 100% CPU. [code] import threading, time class TestThread ( threading.Thread ): def run ( self ): print 'TEST' t = TestThread() t.start() while (True): pass [/code] Does anyone know how to run this without consuming all CPU. regards, MJ -- http://mail.python.org/mailman/listinfo/python-list
Re: THREADS use 100 % CPU all the time
[EMAIL PROTECTED] schrieb: while (True): pass Does anyone know how to run this without consuming all CPU. Your while loop is taking all the CPU time. Thomas -- sinature: http://nospam.nowire.org/signature_usenet.png -- http://mail.python.org/mailman/listinfo/python-list
Re: About Trolltech QT OpenSource license.
On Apr 11, 10:56 am, Robert Kern [EMAIL PROTECTED] wrote: Others have given good answers. I would only like to clarify what I think is the source of confusion here. While the FSF and many open source advocates make a distinction between the words commercial (meaning that someone derives money from distributing the software, whether it is GPLed or not) and proprietary (meaning that the software is not being distributed under an open source license but one that restricts user's rights), Trolltech abuses the term commercial to mean proprietary in this case. Ok, i see...So i can use Qt OS edition and earn money from this as long as i explicitly say (is a reference to a GPL in a readme text file enough for this ?) that this software is under the GPL lisence and i have the obligation to give the source code with it. I will reply to that email of Trolltec's today and i will tell them about the things mentioned here, basically just the sentence i wrote above. I see what they will reply and post it here... -- http://mail.python.org/mailman/listinfo/python-list
Re: __file__
Hi, Thanks for the response. On Apr 11, 12:49 am, Gabriel Genellina [EMAIL PROTECTED] wrote: __file__ corresponds to the filename used to locate and load the module, whatever it is. When the module is found on the current directory (corresponding to '' in sys.path), you get just the filename; if sys.path contains a relative path, that's what you get; the same for any absolute path. Whatever path worked to find and load the module, that's stored as __file__. If you plan to use it, it's a good idea to make it early into an absolute path (using os.path.abspath(__file__)) just in case the current directory changes. That last part doesn't seem to fit with your description above. What does the current working directory have to do with the path that was used to load a module? I would think the path that was used to load a module is constant. -- http://mail.python.org/mailman/listinfo/python-list
UDT wrappers
Found a couple of papers that mention Python wrappers for UDT have been written but Google fails me. Do any of you know of such wrappers? Have downloaded UDT SDK but source is in C++. http://udt.sourceforge.net/ -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 10 Apr, 20:04, Chris Mellon [EMAIL PROTECTED] wrote: This is a rare enough use case and is easy enough to work around (convert it to a list, write a helper function) that I don't think it's worth any language change overhead at all. It isn't a language change: it's a change to the interface of a data type, and not a particularly big one, either. Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: About Trolltech QT OpenSource license.
On 11 Apr, 11:51, king kikapu [EMAIL PROTECTED] wrote: Ok, i see...So i can use Qt OS edition and earn money from this as long as i explicitly say (is a reference to a GPL in a readme text file enough for this ?) that this software is under the GPL lisence and i have the obligation to give the source code with it. I'll leave the specifics of this case to one side and say that for any software that you intend to distribute under the GPL, you should provide references to the licence at least in some kind of text file (I use COPYING.txt for this), but also in your source files (I typically use module docstrings, but I imagine that comment lines might be better in some respects), as well as a copy of the licence (I use LICENCE.txt for this). You should find the licence text in any GPL- licensed package as well as at the FSF site: http://www.fsf.org/licensing/licenses/gpl.html The making money aspect can be simplified to this: you can sell copies of your software, but anyone receiving that software is entitled to the sources at cost, and since they receive the software under the GPL, they are entitled to redistribute it under the same terms. One popular misunderstanding is that if a company is selling GPL-licensed software, they have to give the sources away to anyone who asks; in fact, only people who have received the software are entitled to the sources: http://www.fsf.org/licensing/licenses/gpl-faq.html#CanIDemandACopy Various companies do, however, give away sources to anyone but then make money out of the effort to turn such sources into executable systems. For example, Red Hat make the sources on which their products are based available to anyone, but since the effort in building them, putting everything together, testing the result, and so on is non- trivial, people pay them money to do that particular work. As has been said elsewhere in this discussion, the specific use of the term commercial in the case described may be aimed at a corporate mindset which equates commercial to proprietary, but Free (and open source) Software can be the basis for commercial activities, too. Paul -- http://mail.python.org/mailman/listinfo/python-list
New York City Python Users Group Meeting
Greetings! The next New York City Python Users Group meeting is this Tuesday, April 10th, 6:30pm at at the Millennium Partners office at 666 Fifth Avenue (53rd St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who are interested in Python to attend. However, we need a list of first and last names to give to building security to make sure you can gain access to the building. RSVP to [EMAIL PROTECTED] to add your name to the list. More information can be found on the yahoo group page: http://tech.groups.yahoo.com/group/nycpython/ http://tech.groups.yahoo.com/group/nycpython/ Hope to see you there! -John -- http://mail.python.org/mailman/listinfo/python-list
Shutting down windows using win32api
- 8:00? 8:25? 8:40? Find a flick in no time with theYahoo! Search movie showtime shortcut.-- http://mail.python.org/mailman/listinfo/python-list
Re: calling super()
John Clark wrote: Please be aware that super() has it's own set of gotchas - it's not as clean as you would hope. For more info: http://fuhm.org/super-harmful/ (I'm not the author, I was referred to this article while struggling with wxPython and super()) This was interesting! I'm using single inheritance in most of the cases. In very rare cases I use mixin classes, but they do not have constructors. In this situlation, I hope I'm right and I can safely use super(). I must agree that if a class uses super in its constructor, then all its descendants and bases must also use super. However, I'm using super in other cases. For example, for threading.Thread descendants, extensively, without any problems. Am I right in what I'm doing? Thanks, Laszlo -- http://mail.python.org/mailman/listinfo/python-list
Pass A Var To a Python Script?
Hi; How do I pass a variable to a python script? Something like this (which doesn't work): ./test.py?var=hello_world TIA, Eric _ Mortgage refinance is Hot. *Terms. Get a 5.375%* fix rate. Check savings https://www2.nextag.com/goto.jsp?product=10035url=%2fst.jsptm=ysearch=mortgage_text_links_88_h2bbbdisc=yvers=925s=4056p=5117 -- http://mail.python.org/mailman/listinfo/python-list
[OT] MSN client for console project
Hey, there. I just wanted to tell you that Im designing an MSN client for console in Python. I know that the protocol kinda sucks, but Im afraid the chicks I meet in here just don't use Jabber. The 'never seen' thing I am planning for it, is picture support. I do not mean to have the possibility of seeing other people's pictures (cause It is not the purpuse to use SVGAlib), but for them to see one of out choice. It's being written in Python, as I said above; using Ncurses, and based on MsnLib and ideas from other clients just as CenterICQ y Pebrot. Please, to all you interested in knowing more, do not hesitate to contact me. Saludos. Andrés M. _ Consigue aquí las mejores y mas recientes ofertas de trabajo EE.UU. http://latino.msn.com/empleos -- http://mail.python.org/mailman/listinfo/python-list
Re: Why does not my wx.html.HtmlWindow work?
On 7 Apr 2007 20:38:25 -0700, [EMAIL PROTECTED] wrote Below are my source code: [snip html.LoadPage( http://www.pythonthreads.com/articles/python/incorporating-into- wxpython-part-1.html) [snip] Have you tried loading a simpler page, something like http://www.google.com? -Carsten -- http://mail.python.org/mailman/listinfo/python-list
Get Shift + TAB in ncurses.
Anyone can help me getting the shift + tab key combination ? I tried with getch () but with no success. May be using the sys.stdin ?? Please, help would be very appreciated. -- Andrés M. - -- http://mail.python.org/mailman/listinfo/python-list
multithreading concept
The information contained in this electronic message and any attachments to this message are intended for the exclusive use of the addressee(s) and may contain proprietary, confidential or privileged information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately and destroy all copies of this message and any attachments. WARNING: Computer viruses can be transmitted via email. The recipient should check this email and any attachments for the presence of viruses. The company accepts no liability for any damage caused by any virus transmitted by this email. www.wipro.com-- http://mail.python.org/mailman/listinfo/python-list
py script modify it's Modified Time?
I guess os.stat() could retrieve information about ctime, mtime of a path, but how can I change them? Is it possible to make it work both under Win32 and Linux? P.S. How to get the current running python? (Like WScript.ScriptFullName in vbscript) -- http://mail.python.org/mailman/listinfo/python-list
Re: Pass A Var To a Python Script?
Hi, Use sys.argv to access the command line arguments eg: import sys print sys.argv[0] print sys.argv[1] Run the above script as /test.py hello world On 4/7/07, Eric Price [EMAIL PROTECTED] wrote: Hi; How do I pass a variable to a python script? Something like this (which doesn't work): ./test.py?var=hello_world TIA, Eric _ Mortgage refinance is Hot. *Terms. Get a 5.375%* fix rate. Check savings https://www2.nextag.com/goto.jsp?product=10035url=%2fst.jsptm=ysearch=mortgage_text_links_88_h2bbbdisc=yvers=925s=4056p=5117 -- http://mail.python.org/mailman/listinfo/python-list -- Regards-- Rishi Pathak National PARAM Supercomputing Facility Center for Development of Advanced Computing(C-DAC) Pune University Campus,Ganesh Khind Road Pune-Maharastra -- http://mail.python.org/mailman/listinfo/python-list
Re: Pass A Var To a Python Script?
On Apr 7, 2007, at 1:13 PM, Eric Price wrote: Hi; How do I pass a variable to a python script? Something like this (which doesn't work): ./test.py?var=hello_world The easiest thing would be to drop the '?var=': ./test.py hello_world Then in your script, use sys.argv to gather the argument (hello_world). hth, Michael -- http://mail.python.org/mailman/listinfo/python-list
ANN: Next NYC Python User Group meeting, Tues May 8th, 2007, 6:30 pm
My apologies for the comical timing of the below announcement - I actually sent the announcement on April 4th, but it obviously didn't clear the moderator's desk in time for the meeting mentioned below. In an attempt to avoid this same problem, let me announce next month's meeting now. The next New York City Python Users Group meeting is Tuesday, May 8th from 6:30-8:30pm at the Millenium Partners office at 666 Fifth Avenue (53rd St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who are interested in Python to attend. However, we need a list of first and last names to give to building security to make sure you can gain access to the building. RSVP to [EMAIL PROTECTED] to add your name to the list. More information can be found on the yahoo group page: http://tech.groups.yahoo.com/group/nycpython Hope to see you there! -John _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of John Clark Sent: Wednesday, April 04, 2007 3:46 PM To: python-list@python.org; [EMAIL PROTECTED]; tutor@python.org Subject: New York City Python Users Group Meeting Greetings! The next New York City Python Users Group meeting is this Tuesday, April 10th, 6:30pm at at the Millennium Partners office at 666 Fifth Avenue (53rd St. and 5th Ave.) on the 8th Floor. We welcome all those in the NYC area who are interested in Python to attend. However, we need a list of first and last names to give to building security to make sure you can gain access to the building. RSVP to [EMAIL PROTECTED] to add your name to the list. More information can be found on the yahoo group page: http://tech.groups.yahoo.com/group/nycpython/ http://tech.groups.yahoo.com/group/nycpython/ Hope to see you there! -John -- http://mail.python.org/mailman/listinfo/python-list
Re: THREADS use 100 % CPU all the time
On Apr 11, 2:38 am, [EMAIL PROTECTED] wrote: Hi all, I have a application where I use different threads. actually all is working - BUT I just discovered that the [b]CPU is always 100 % [/ b]used. on the 32-bit machine athlon XP, as well as on the amd 64-bit AMD Athlon(TM) 64 X2 Dual-Core. I have to admit I'm not used to threads. I actually use a thirdparty scheduler [url]http://www.webwareforpython.org/TaskKit/Docs/Source/ Docs/TaskKit.Scheduler.html[/url] but I checked and a very simple exampe with threading gives me also all the time 100% CPU. [code] import threading, time class TestThread ( threading.Thread ): def run ( self ): print 'TEST' t = TestThread() t.start() while (True): pass [/code] Does anyone know how to run this without consuming all CPU. regards, MJ You need your program to sleep a while to allow a switch to other tasks. Like so: ### import threading, time class TestThread(threading.Thread): def run(self): print 'TEST' t = TestThread() t.start() while (True): time.sleep(0.01) pass ### Regards -- http://mail.python.org/mailman/listinfo/python-list
Re: Shutting down windows using win32api
On a whim, given the terseness of your post, I cut-and-pasted your subject line into Google, added python for good measure, and looked at the results. I suggest you might do the same. Granted, maybe this will raise more questions, but at least it shows willing :) TJG -- http://mail.python.org/mailman/listinfo/python-list
Re: Why does not my wx.html.HtmlWindow work?
Hi, Coming from the wx community, I do know that the wx.HtmlWindow is NOT meant to load full blown web pages with. It has no concept of javascript, CSS, and other complex DOM properties. If you really want to display complex web pages in a window, look at wxMozilla or the wxIE binding. So the reason it freaks out might be related to the fact the page is too complex, or that the simplistic engine cannot cope with html tags out in the wild. Regards, - Jorgen On 4/8/07, Carsten Haese [EMAIL PROTECTED] wrote: On 7 Apr 2007 20:38:25 -0700, [EMAIL PROTECTED] wrote Below are my source code: [snip html.LoadPage( http://www.pythonthreads.com/articles/python/incorporating-into- wxpython-part-1.html) [snip] Have you tried loading a simpler page, something like http://www.google.com? -Carsten -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Parsing log in SQL DB to change IPs to hostnames
On Apr 11, 1:15 am, Dennis Lee Bieber [EMAIL PROTECTED] wrote: On 10 Apr 2007 11:54:18 -0700, KDawg44 [EMAIL PROTECTED] declaimed the following in comp.lang.python: [- BEGIN ERROR ---] Traceback (most recent call last): File changeLogs.py, line 47, in ? cursor.execute(UPDATE logs SET msg = %s WHERE seq = %i, (newMsg,seqNum)) File /usr/lib/python2.4/site-packages/MySQLdb/cursors.py, line 148, in execute query = query % db.literal(args) TypeError: int argument required [- END ERROR ---] Here is my code [- BEGIN CODE ---] Comments interspersed #! /usr/bin/python import socket import sys import re import string import MySQLdb def resolveHost(ipAdds): ipDict = {} for ips in ipAdds: try: ipDict[ips] = socket.gethostbyaddr(ips)[0] except: ipDict[ips] = Cannot resolve return ipDict ipRegExC = r\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} ipRegEx = re.compile(ipRegExC) try: conn = MySQLdb.connect(host=REMOVED, user=REMOVED, passwd=REMOVED, db=REMOVED) except MySQLdb.Error, e: print Error connecting to the database: %s - %s % (e.args[0], e.args[1]) #just use %s unless you need particular numeric formatting #(field width and decimal places, as in %8.4f)sys.exit(1) cursor = conn.cursor() cursor.execute(SELECT msg, seq FROM logs WHERE seq = 507702) #why the ` around the table name? #I also presume at some point that 507702 becomes dynamic -- otherwise the returned #seq field will always be 507702,-- and if there are multiple instances, the update #statement below will change all of them each time #while(1): # row = cursor.fetchone() for row in cursor:ipAddresses = [] resolvedDict = {} # if row == None: # breakif ipRegEx.search(row[0]): seqNum = row[1] ipAddresses = ipRegEx.findall(row[0]) resolvedDict = resolveHost(ipAddresses) newMsg = row[0] for ip in resolvedDict.keys(): newMsg = newMsg.replace(ip, ip + - +resolvedDict[ip]) cursor.execute( UPDATE REMOVED SET msg = %s WHERE seq = %s, (newMsg, seqNum)) #the documented parameter code for MySQLdb is %s; use of anything #else relies upon luck -- luck that the safety logic inside the module #leaves the parameter in a format compatible with the format code! #%s is the only code you should use with MySQLd -- regardless of #the type of the actual data -- WulfraedDennis Lee Bieber KD6MOG [EMAIL PROTECTED] [EMAIL PROTECTED] HTTP://wlfraed.home.netcom.com/ (Bestiaria Support Staff: [EMAIL PROTECTED]) HTTP://www.bestiaria.com/ ohhh okay. thanks so much. I knew that it came out as strings, i guess it makes sense that I would have to send it back IN as a string. Changed that and now it works! THanks so much. I just specified once specific field so that it would not change the whole db on a test run. Thanks so much. -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On Wed, 11 Apr 2007 08:57:43 +0200, Hendrik van Rooyen wrote: I can write: L = [a,b,c,d,e,f] T= (a,b,c,d,e,f) The difference between the two things is that I can add to and change L, but not T. No, that's *one* difference between the two things. There are other differences, e.g. the obvious is that they are different types (and therefore different string representations), but also some not so obvious: hash((1,2,3)) -378539185 hash([1,2,3]) Traceback (most recent call last): File stdin, line 1, in module TypeError: list objects are unhashable Now it seems to me that whatever argument is used to justify the existence of: n = L.index(d) can be used to justify the existence of: n = T.index(d) and vice versa. That depends on what you the purpose of lists and tuples are. Yes, they are both sequences, but they have different uses. Ball-peen hammers and tack hammers are both hammers, but they have different purposes and therefore different functionality. Likewise for tuples and lists: Lists are designed for sequences of homogeneous items, e.g.: L = [1, 2, 4, 8, 16, 32] while tuples are designed to be more like structs or records, with heterogeneous items, e.g.: T = (Fred, 32, 12.789, {}, None, '\t') So according to these intended usages, it makes sense to ask for L.index(32) because in an application you have no way of telling which item (if any) 32 would be in. But T.index(32) is seen as meaningless, because you know that either 32 is in the second slot or it isn't -- you're never going to find yourself in a situation knowing that 32 is *somewhere* in the tuple without knowing where the one place it *could* be. (There is one other option: you care that 32 is somewhere in the tuple, but you don't care where. That's when you use the in operator.) Anyway, that was the original design. When you see tuple, think struct. If you have a struct, it doesn't make a whole lot of sense to ask which field contains 32?, and so according to this intended usage, giving tuples index and count methods would be a Bad Idea: it just makes extra work for the Python Dev team, for no benefit. Personally, I think that tuples do double-duty as *both* immutable lists and structs/records. So even though index and count methods don't make sense for a struct, it does make sense for an immutable list, and I for one would not object to seeing tuples grow those two methods. [snip] And I would heretically go even further, and argue that it should be possible to write stuff like: T = T.append(x) And get back a new tuple bound to the old name... That's a design decision, and one that's not likely to be accepted because it's so easy to do: T = T + (x,) # like T.append() T = T + (x, y, z) # like T.extend() T = tuple(sorted(T)) # like T.sort() T = T[:4] + T[4:] # like del T[4] etc. It makes sense for lists to have these methods because lists can make the changes in place, but tuples can't. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
Re: __file__
On Apr 11, 8:03 pm, 7stud [EMAIL PROTECTED] wrote: Hi, Thanks for the response. On Apr 11, 12:49 am, Gabriel Genellina [EMAIL PROTECTED] wrote: __file__ corresponds to the filename used to locate and load the module, whatever it is. When the module is found on the current directory (corresponding to '' in sys.path), you get just the filename; if sys.path contains a relative path, that's what you get; the same for any absolute path. Whatever path worked to find and load the module, that's stored as __file__. If you plan to use it, it's a good idea to make it early into an absolute path (using os.path.abspath(__file__)) just in case the current directory changes. That last part doesn't seem to fit with your description above. What does the current working directory have to do with the path that was used to load a module? I would think the path that was used to load a module is constant. You are correct, but that is not what GG was talking about. Here is an example of what he meant: While your cwd is /bar, you load module foo from a *relative*( path, e.g. ./foo.py. If you do the os.path.abspath(./foo.py) immediately as recommended, you get the correct answer: /bar/foo.py. However if you change your cwd to /zot, then do the os.path.abspath(./foo.py), you get /zot/foo.py which is a nonsense. HTH, John -- http://mail.python.org/mailman/listinfo/python-list
Re: THREADS use 100 % CPU all the time
On Apr 11, 1:36 pm, A.B., Khalid [EMAIL PROTECTED] wrote: On Apr 11, 2:38 am, [EMAIL PROTECTED] wrote: Hi all, I have a application where I use different threads. actually all is working - BUT I just discovered that the [b]CPU is always 100 % [/ b]used. on the 32-bit machine athlon XP, as well as on the amd 64-bit AMD Athlon(TM) 64 X2 Dual-Core. I have to admit I'm not used to threads. I actually use a thirdparty scheduler [url]http://www.webwareforpython.org/TaskKit/Docs/Source/ Docs/TaskKit.Scheduler.html[/url] but I checked and a very simple exampe with threading gives me also all the time 100% CPU. [code] import threading, time class TestThread ( threading.Thread ): def run ( self ): print 'TEST' t = TestThread() t.start() while (True): pass [/code] Does anyone know how to run this without consuming all CPU. regards, MJ You need your program to sleep a while to allow a switch to other tasks. Like so: ### import threading, time class TestThread(threading.Thread): def run(self): print 'TEST' t = TestThread() t.start() while (True): time.sleep(0.01) pass ### Regards Thanks a lot both of you. MJ -- http://mail.python.org/mailman/listinfo/python-list
RE: tuples, index method, Python's design
-Original Message- From: [EMAIL PROTECTED] [mailto:python- [EMAIL PROTECTED] On Behalf Of Steven D'Aprano Sent: Wednesday, April 11, 2007 7:49 AM To: python-list@python.org Subject: Re: tuples, index method, Python's design (There is one other option: you care that 32 is somewhere in the tuple, but you don't care where. That's when you use the in operator.) Anyway, that was the original design. When you see tuple, think struct. If you have a struct, it doesn't make a whole lot of sense to ask which field contains 32?, and so according to this intended usage, giving tuples index and count methods would be a Bad Idea: it just makes extra work for the Python Dev team, for no benefit. Personally, I think that tuples do double-duty as *both* immutable lists and structs/records. So even though index and count methods don't make sense for a struct, it does make sense for an immutable list, and I for one would not object to seeing tuples grow those two methods. From another function, you receive a tuple of data that it extracted from a stream. Within that tuple is a marker that indicates where the head of the incoming stream's data structure is. You need to find the marker and scan from that location on to sync your local data structure to the incoming stream's data. Should the external function provide the stream data in a list rather than a tuple? Probably, but someone else wrote the function so that's out of your control. Can you cast the tuple to a list? Sure, but for a large tuple that's potentially a large speed and memory hit. That probably the biggest general use case for tuple.index(). A third-party module returns a tuple in which you need to find a piece of data. --- -Bill Hamilton [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 2007-04-11, Steven D'Aprano [EMAIL PROTECTED] wrote: On Wed, 11 Apr 2007 08:57:43 +0200, Hendrik van Rooyen wrote: I can write: L = [a,b,c,d,e,f] T= (a,b,c,d,e,f) The difference between the two things is that I can add to and change L, but not T. No, that's *one* difference between the two things. There are other differences, e.g. the obvious is that they are different types (and therefore different string representations), but also some not so obvious: hash((1,2,3)) -378539185 hash([1,2,3]) Traceback (most recent call last): File stdin, line 1, in module TypeError: list objects are unhashable Now it seems to me that whatever argument is used to justify the existence of: n = L.index(d) can be used to justify the existence of: n = T.index(d) and vice versa. That depends on what you the purpose of lists and tuples are. Yes, they are both sequences, but they have different uses. Ball-peen hammers and tack hammers are both hammers, but they have different purposes and therefore different functionality. Likewise for tuples and lists: Lists are designed for sequences of homogeneous items, e.g.: L = [1, 2, 4, 8, 16, 32] while tuples are designed to be more like structs or records, with heterogeneous items, e.g.: T = (Fred, 32, 12.789, {}, None, '\t') I think you are confused. Last time I heard this homogeneous items stuf, it had nothing to do with the types being the same. They were homogeneous because they somehow belonged together and heterogeneous because they just happened to live together. Similarity of type played no part in calling the data homogeneous or heterogeneous. -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
In [EMAIL PROTECTED], Antoon Pardon wrote: On 2007-04-11, Steven D'Aprano [EMAIL PROTECTED] wrote: Lists are designed for sequences of homogeneous items, e.g.: L = [1, 2, 4, 8, 16, 32] while tuples are designed to be more like structs or records, with heterogeneous items, e.g.: T = (Fred, 32, 12.789, {}, None, '\t') I think you are confused. Last time I heard this homogeneous items stuf, it had nothing to do with the types being the same. They were homogeneous because they somehow belonged together and heterogeneous because they just happened to live together. Similarity of type played no part in calling the data homogeneous or heterogeneous. Then you are confused. The typical use case for tuples are database records. The columns in the table can have completely different types but the values in a row, represented as a Python tuple, of course belong together. The homogeneous objects in lists must not be of the same type but share some behavior so it makes sense to apply some operation on all the elements. For example get the length of each item or sum them all up. Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Connection problems with irclib
Hi. I've written a bot in python, using the irclib by Joel Rosdahl. Works fine from my linux box at home, but when I upload it to my shell at veritynet.net, can't seem to get it to connect to an irc server. It doesn't report any errors. Anyone have any idea how I might go about at least diagnosing the problem? Any suggestions might help. Thanks in advance. -- http://mail.python.org/mailman/listinfo/python-list
Re: py script modify it's Modified Time?
On Apr 11, 6:14 am, est [EMAIL PROTECTED] wrote: I guess os.stat() could retrieve information about ctime, mtime of a path, but how can I change them? Is it possible to make it work both under Win32 and Linux? P.S. How to get the current running python? (Like WScript.ScriptFullName in vbscript) I am not sure if you can change a creation time of a file on NT, but the rest sounds possible; according to this post anyway: http://mail.python.org/pipermail/python-list/2001-August/100214.html It mentions using the win32 modules, which can be found here: http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/pywin32/win32_modules.html As to your last question of finding the current running python, use the sys module's executable method, like so: sys.executable Mike -- http://mail.python.org/mailman/listinfo/python-list
SOAP Webservices and Python
Hello Chaps, I'm pretty new to the world of Python, but I'm slowly getting my head around things, and on today's agenda I'm looking at consuming SOAP web services. I've got an Adobe ColdFusion application which I've written that publishes the web service that I'm looking to consume, but I'm at a loss as to where to start. I'm running Python 2.4.4 on a Debian Linux distribution, in case that makes any difference. I thought I'd start with something very simple, just a service I pass an ID to and it'll return a Boolean value. Here is the web service link. http://www.yourblue.co.uk/webservicetester/ip.cfc?wsdl I'd be interested to hear any thoughts on the best way to go about this, or perhaps some working code examples of consuming this service. I will always have the WSDL file available to me by appending the ?wsdl to the URL, I've heard this makes life easier. like I say, I'm pretty new so it's perfectly ok for you guys to assume I'm an idiot and talk to me as if I were a small child :-D Thanks, Rob -- http://mail.python.org/mailman/listinfo/python-list
Re: Connection problems with irclib
On 11 Apr, 15:31, Dropkick Punt [EMAIL PROTECTED] wrote: Hi. I've written a bot in python, using the irclib by Joel Rosdahl. Works fine from my linux box at home, but when I upload it to my shell at veritynet.net, can't seem to get it to connect to an irc server. It may well be the case that your hosting provider has blocked various IRC ports and/or traffic. It doesn't report any errors. Anyone have any idea how I might go about at least diagnosing the problem? Any suggestions might help. Check your provider's usage policy and documentation. Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 2007-04-11, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: In [EMAIL PROTECTED], Antoon Pardon wrote: On 2007-04-11, Steven D'Aprano [EMAIL PROTECTED] wrote: Lists are designed for sequences of homogeneous items, e.g.: L = [1, 2, 4, 8, 16, 32] while tuples are designed to be more like structs or records, with heterogeneous items, e.g.: T = (Fred, 32, 12.789, {}, None, '\t') I think you are confused. Last time I heard this homogeneous items stuf, it had nothing to do with the types being the same. They were homogeneous because they somehow belonged together and heterogeneous because they just happened to live together. Similarity of type played no part in calling the data homogeneous or heterogeneous. Then you are confused. The typical use case for tuples are database records. The columns in the table can have completely different types but the values in a row, represented as a Python tuple, of course belong together. Don't blame me. I don't agree with the view. But that was sort of the explanation that was given here last time I remember this topic came up in defending why tuples and lists differ in a number of ways that are less obvious. They wrote about lists containing homogeneous items and tuples containing hetergenous items but stressed rather strongly that this shouldn't be understood in terms of type similarities. The homogeneous objects in lists must not be of the same type but share some behavior so it makes sense to apply some operation on all the elements. For example get the length of each item or sum them all up. No they don't. The counter example is using a list as a stack when evaluating expressions. You can use one stack to store the still to be treated numbers and operands and those two don't need common behaviour. -- Antoon Pardon -- http://mail.python.org/mailman/listinfo/python-list
Re: How to get IP address of client from CGI module?
In article [EMAIL PROTECTED], John Nagle [EMAIL PROTECTED] wrote: The documentation for Python's CGI module doesn't seem to say how to get the IP address of the client. Don't see an obvious way to get that info from reading the source, either. Ideas? John Nagle os.environ['REMOTE_ADDR']? -- http://mail.python.org/mailman/listinfo/python-list
Python-URL! - weekly Python news and links (Apr 11)
QOTW: Dictionaries are one of the most useful things in Python. Make sure you know how to take adavantage of them... - Jeremy Sanders Python has consistently failed to disappoint me. - Tal Einat super() only works on new-style classes ... and has its own set of gotchas: http://groups.google.com/group/comp.lang.python/msg/f44c8c09e1593dcf Yes, there certainly *are* times that connection to a terminal makes a difference. There also are ways to control that difference: http://groups.google.com/group/comp.lang.python/browse_thread/thread/b5975d27da432e92/ Michael Bentley reports satisfaction with Wing IDE's ability to debug multithreading Python: http://groups.google.com/group/comp.lang.python/msg/f44c8c09e1593dcf Does Python know about such matters as 'gt;' ('')? Sure: just import htmlentitydefs: http://groups.google.com/group/comp.lang.python/browse_thread/thread/7f96723282376f8c/ http://groups.google.com/group/comp.lang.python/browse_thread/thread/d09417aedc1b807b/ Everything Python-related you want is probably one or two clicks away in these pages: Python.org's Python Language Website is the traditional center of Pythonia http://www.python.org Notice especially the master FAQ http://www.python.org/doc/FAQ.html PythonWare complements the digest you're reading with the marvelous daily python url http://www.pythonware.com/daily Mygale is a news-gathering webcrawler that specializes in (new) World-Wide Web articles related to Python. http://www.awaretek.com/nowak/mygale.html While cosmetically similar, Mygale and the Daily Python-URL are utterly different in their technologies and generally in their results. For far, FAR more Python reading than any one mind should absorb, much of it quite interesting, several pages index much of the universe of Pybloggers. http://lowlife.jp/cgi-bin/moin.cgi/PythonProgrammersWeblog http://www.planetpython.org/ http://mechanicalcat.net/pyblagg.html The Python Papers aims to publish the efforts of Python enthusiats. http://pythonpapers.org/ Readers have recommended the Planet sites: http://planetpython.org http://planet.python.org comp.lang.python.announce announces new Python software. Be sure to scan this newsgroup weekly. http://groups.google.com/groups?oi=djqas_ugroup=comp.lang.python.announce Python411 indexes podcasts ... to help people learn Python ... Updates appear more-than-weekly: http://www.awaretek.com/python/index.html Steve Bethard continues the marvelous tradition early borne by Andrew Kuchling, Michael Hudson, Brett Cannon, Tony Meyer, and Tim Lesher of intelligently summarizing action on the python-dev mailing list once every other week. http://www.python.org/dev/summary/ The Python Package Index catalogues packages. http://www.python.org/pypi/ The somewhat older Vaults of Parnassus ambitiously collects references to all sorts of Python resources. http://www.vex.net/~x/parnassus/ Much of Python's real work takes place on Special-Interest Group mailing lists http://www.python.org/sigs/ Python Success Stories--from air-traffic control to on-line match-making--can inspire you or decision-makers to whom you're subject with a vision of what the language makes practical. http://www.pythonology.com/python/success The Python Software Foundation (PSF) has replaced the Python Consortium as an independent nexus of activity. It has official responsibility for Python's development and maintenance. http://www.python.org/psf/ Among the ways you can support PSF is with a donation. http://www.python.org/psf/donate.html Kurt B. Kaiser publishes a weekly report on faults and patches. http://www.google.com/groups?as_usubject=weekly%20python%20patch Although unmaintained since 2002, the Cetus collection of Python hyperlinks retains a few gems. http://www.cetus-links.org/oo_python.html Python FAQTS http://python.faqts.com/ The Cookbook is a collaborative effort to capture useful and interesting recipes. http://aspn.activestate.com/ASPN/Cookbook/Python Many Python conferences around the world are in preparation. Watch this space for links to them. Among several Python-oriented RSS/RDF feeds available are http://www.python.org/channews.rdf http://bootleg-rss.g-blog.net/pythonware_com_daily.pcgi http://python.de/backend.php For more, see http://www.syndic8.com/feedlist.php?ShowMatch=pythonShowStatus=all The old Python To-Do List now lives principally in a SourceForge reincarnation.
Re: tuples, index method, Python's design
On 4/11/07, Hamilton, William [EMAIL PROTECTED] wrote: -Original Message- From: [EMAIL PROTECTED] [mailto:python- [EMAIL PROTECTED] On Behalf Of Steven D'Aprano Sent: Wednesday, April 11, 2007 7:49 AM To: python-list@python.org Subject: Re: tuples, index method, Python's design (There is one other option: you care that 32 is somewhere in the tuple, but you don't care where. That's when you use the in operator.) Anyway, that was the original design. When you see tuple, think struct. If you have a struct, it doesn't make a whole lot of sense to ask which field contains 32?, and so according to this intended usage, giving tuples index and count methods would be a Bad Idea: it just makes extra work for the Python Dev team, for no benefit. Personally, I think that tuples do double-duty as *both* immutable lists and structs/records. So even though index and count methods don't make sense for a struct, it does make sense for an immutable list, and I for one would not object to seeing tuples grow those two methods. From another function, you receive a tuple of data that it extracted from a stream. Within that tuple is a marker that indicates where the head of the incoming stream's data structure is. You need to find the marker and scan from that location on to sync your local data structure to the incoming stream's data. Should the external function provide the stream data in a list rather than a tuple? Probably, but someone else wrote the function so that's out of your control. Can you cast the tuple to a list? Sure, but for a large tuple that's potentially a large speed and memory hit. That probably the biggest general use case for tuple.index(). A third-party module returns a tuple in which you need to find a piece of data. So, when you have a) a third party module that you cannot change and b) it shouldn't return a tuple but it does anyway and c) it's a big enough tuple that is large enough that conversion to a list is prohibitive, that's a general use case for tuple.index? Has this supposedly general and common use case actually happened? -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 4/10/07, BJörn Lindqvist [EMAIL PROTECTED] wrote: while not game_has_ended: for current_player in p: player_does_something(current_player) I'm curious why someone would even consider using a tuple in this case regardless. I think that much of the desire for tuple.index is because people use a tuple where they could have a list, but either a) some vestige of BD language programming comes out and they want to make Maybe someone had to much alcohol when they were coding? Maybe they don't know better? Maybe they thought that an index method on a sequence made sense? Who are you to spoil their fun? Could it be that YOU are the BD person? If you want a language that just adds whatever methods anyone thinks of, along with whatever aliases for it any can think of, to every data type, you know where to find Ruby. -- http://mail.python.org/mailman/listinfo/python-list
Re: Connection problems with irclib
On Wed, 11 Apr 2007 06:46:14 +, Paul Boddie wrote: On 11 Apr, 15:31, Dropkick Punt [EMAIL PROTECTED] wrote: Hi. I've written a bot in python, using the irclib by Joel Rosdahl. Works fine from my linux box at home, but when I upload it to my shell at veritynet.net, can't seem to get it to connect to an irc server. It may well be the case that your hosting provider has blocked various IRC ports and/or traffic. Thanks but no. The shell is generally used for eggdrops, and port 6667 is open. They even installed python specifically so I could run this bot. It doesn't report any errors. Anyone have any idea how I might go about at least diagnosing the problem? Any suggestions might help. Check your provider's usage policy and documentation. -- http://mail.python.org/mailman/listinfo/python-list
run function in separate process
Hi everyone, I have written a function that runs functions in separate processes. I hope you can help me improving it, and I would like to submit it to the Python cookbook if its quality is good enough. I was writing a numerical program (using numpy) which uses huge amounts of memory, the memory increasing with time. The program structure was essentially: for radius in radii: result = do_work(params) where do_work actually uses a large number of temporary arrays. The variable params is large as well and is the result of computations before the loop. After playing with gc for some time, trying to convince it to to release the memory, I gave up. I will be happy, by the way, if somebody points me to a web page/reference that says how to call a function then reclaim the whole memory back in python. Meanwhile, the best that I could do is fork a process, compute the results, and return them back to the parent process. This I implemented in the following function, which is kinda working for me now, but I am sure it can be much improved. There should be a better way to return the result that a temporary file, for example. I actually thought of posting this after noticing that the pypy project had what I thought was a similar thing in their testing, but they probably dealt with it differently in the autotest driver [1]; I am not sure. Here is the function: def run_in_separate_process(f, *args, **kwds): from os import tmpnam, fork, waitpid, remove from sys import exit from pickle import load, dump from contextlib import closing fname = tmpnam() pid = fork() if pid 0: #parent waitpid(pid, 0) # should have checked for correct finishing with closing(file(fname)) as f: result = load(f) remove(fname) return result else: #child result = f(*args, **kwds) with closing(file(fname,'w')) as f: dump(result, f) exit(0) To be used as: for radius in radii: result = run_in_separate_process (do_work, params) [1] http://codespeak.net/pipermail/pypy-dev/2006q3/003273.html Regards, Muhammad Alkarouri -- http://mail.python.org/mailman/listinfo/python-list
passing class by reference does not work??
Here is my code: class A(): val = 0 def b(item, a): a.val = a.val + 1 return item + a.val def c(): d = [1, 2, 3] print [b(item, A()) for item in d] c() I expected this to output [2, 4, 6]. However, it outputs [2, 3, 4] which is not what I wanted. I thought that if I passed the A() instance in my list comprehension in c(), then the changes I made to a.val in b() would be reflected in the A() instance next time the list comprehension called b(). But, obviously that is not happening. I'm kinda new at python so I may be missing something obvious here. Any suggestions? -- http://mail.python.org/mailman/listinfo/python-list
A general question
Hi, I am using Matlab, Python and Java for sometime. Matlab looks to be very easy and having specified methods for almost each and everything. Java on the other hand has a good object oriented structure and is very fast. What are the advantages of Python over these two or any other language in general? and what are the areas it lacks behind and what improvements will make it appealing to more and more people? Thank you, Amit - Don't get soaked. Take a quick peak at the forecast with theYahoo! Search weather shortcut.-- http://mail.python.org/mailman/listinfo/python-list
Re: run function in separate process
On Apr 11, 9:23 am, [EMAIL PROTECTED] wrote: Hi everyone, I have written a function that runs functions in separate processes. I hope you can help me improving it, and I would like to submit it to the Python cookbook if its quality is good enough. I was writing a numerical program (using numpy) which uses huge amounts of memory, the memory increasing with time. The program structure was essentially: for radius in radii: result = do_work(params) where do_work actually uses a large number of temporary arrays. The variable params is large as well and is the result of computations before the loop. After playing with gc for some time, trying to convince it to to release the memory, I gave up. I will be happy, by the way, if somebody points me to a web page/reference that says how to call a function then reclaim the whole memory back in python. Meanwhile, the best that I could do is fork a process, compute the results, and return them back to the parent process. This I implemented in the following function, which is kinda working for me now, but I am sure it can be much improved. There should be a better way to return the result that a temporary file, for example. I actually thought of posting this after noticing that the pypy project had what I thought was a similar thing in their testing, but they probably dealt with it differently in the autotest driver [1]; I am not sure. Here is the function: def run_in_separate_process(f, *args, **kwds): from os import tmpnam, fork, waitpid, remove from sys import exit from pickle import load, dump from contextlib import closing fname = tmpnam() pid = fork() if pid 0: #parent waitpid(pid, 0) # should have checked for correct finishing with closing(file(fname)) as f: result = load(f) remove(fname) return result else: #child result = f(*args, **kwds) with closing(file(fname,'w')) as f: dump(result, f) exit(0) To be used as: for radius in radii: result = run_in_separate_process (do_work, params) [1]http://codespeak.net/pipermail/pypy-dev/2006q3/003273.html Regards, Muhammad Alkarouri I found a post on a similar topic that looks like it may give you some ideas: http://mail.python.org/pipermail/python-list/2004-October/285400.html http://www.artima.com/forums/flat.jsp?forum=106thread=174099 http://www.nabble.com/memory-manage-in-python-fu-t3386442.html http://www.thescripts.com/forum/thread620226.html Mike -- http://mail.python.org/mailman/listinfo/python-list
Re: passing class by reference does not work??
def b(item, a): a.val = a.val + 1 return item + a.val This is where the problem lies, specifically the line a.val = a.val + 1 What happens here is that the 1st a.val refers to a member of the class instance a, called val ... which does not yet exist and is therefore created as the result of taking the val member of the class A and adding 1 to it. In other words, a.val is not the same variable as A.val. Are you following? If not, change your b() method to this: def b(item, a): a.val = a.val + 1 assert a.val is A.val return item + a.val and see what happens. -- http://mail.python.org/mailman/listinfo/python-list
Writing XML Logs
Hello Chaps, I'm trying to write an application that will log to an XML file, that'll be later parsed by another application. The proposed log file will look something like this, listing different event elements and then a record for each time that event occurs. ?xml version=1.0 encoding=iso-8859-1? log event name=reboot detail date=2007-01-01 time=12:00:00 / /event event name=calledhome detail date=2007-01-01 time=12:00:00 / detail date=2007-01-01 time=13:00:00 / detail date=2007-01-01 time=14:00:00 / detail date=2007-01-01 time=15:00:00 / /event event name=spotted detail address=00:45:GF:WE:3E:10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 date=2007-01-01 time=12:00:00 / /event event name=discovered detail address=00:45:GF:WE:3E:10 channel=10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 channel=10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 channel=10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 channel=10 date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 channel=10 date=2007-01-01 time=12:00:00 / /event event name=posted detail address=00:45:GF:WE:3E:10 file=test.jpg date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 file=test.jpg date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 file=test.jpg date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 file=test.jpg date=2007-01-01 time=12:00:00 / detail address=00:45:GF:WE:3E:10 file=test.jpg date=2007-01-01 time=12:00:00 / /event /log What I would really like to do is have a different function for each event, so logReboot() or something like that which can be called when the application starts, and it'll create and entry with the current date and time. This must be a static file that is on the box, allot of the examples I've seen seem to work using the 'print' function which is a little sketchy as outputting to the screen isn't any use to me, this needs to be a file that can be collected by another application. Can anyone offer any advice on how best to get started with this kind of thing? I'm running python 2.4.4 but when I've tried running any examples with SAX involved they seem to say 'no module found: sax or something to that effect, I was under the impression that sax came bundled with python 2.0 and above? Thanks guys, Rob -- http://mail.python.org/mailman/listinfo/python-list
Re: passing class by reference does not work??
wswilson [EMAIL PROTECTED] wrote: Here is my code: class A(): val = 0 def b(item, a): a.val = a.val + 1 return item + a.val def c(): d = [1, 2, 3] print [b(item, A()) for item in d] c() I expected this to output [2, 4, 6]. However, it outputs [2, 3, 4] which is not what I wanted. I thought that if I passed the A() instance in my list comprehension in c(), then the changes I made to a.val in b() would be reflected in the A() instance next time the list comprehension called b(). But, obviously that is not happening. I'm kinda new at python so I may be missing something obvious here. Yep: a.val = a.val + 1 sets in INSTANCE variable a the value computed on the RHS. A.val (the CLASS variable) is never changed. You're not passing the class, of course, but rather an instance of the class. To increment A.val, you need to assign to the class variable, or write some method in class A which assigns to the class variable. If you want, you can change class A only, leaving all of the rest of your code untouched, with a property (but then A needs to be newstile), e.g.: class A(object): _val = 0 def getval(self): return A._val def setval(self, value): A._val = value val = property(getval, setval) now your code should work as intended: any read access to a.val returns A._val, and any setting of a.val actually sets A._val, as you appear to desire. Alex -- http://mail.python.org/mailman/listinfo/python-list
Re: passing class by reference does not work??
On Apr 11, 10:36 am, antred [EMAIL PROTECTED] wrote: def b(item, a): a.val = a.val + 1 return item + a.val This is where the problem lies, specifically the line a.val = a.val + 1 What happens here is that the 1st a.val refers to a member of the class instance a, called val ... which does not yet exist and is therefore created as the result of taking the val member of the class A and adding 1 to it. In other words, a.val is not the same variable as A.val. Are you following? If not, change your b() method to this: def b(item, a): a.val = a.val + 1 assert a.val is A.val return item + a.val and see what happens. OK, I see that. I thought I was creating an instance of the class A() when I called the list comprehension and that the a parameter in b() was then a reference to that instance. What can I do instead? -- http://mail.python.org/mailman/listinfo/python-list
RE: passing class by reference does not work??
-Original Message- From: [EMAIL PROTECTED] [mailto:python- [EMAIL PROTECTED] On Behalf Of wswilson Sent: Wednesday, April 11, 2007 9:24 AM To: python-list@python.org Subject: passing class by reference does not work?? Here is my code: class A(): val = 0 def b(item, a): a.val = a.val + 1 return item + a.val def c(): d = [1, 2, 3] print [b(item, A()) for item in d] c() I expected this to output [2, 4, 6]. However, it outputs [2, 3, 4] which is not what I wanted. I thought that if I passed the A() instance in my list comprehension in c(), then the changes I made to a.val in b() would be reflected in the A() instance next time the list comprehension called b(). But, obviously that is not happening. I'm kinda new at python so I may be missing something obvious here. Any suggestions? A() is not the class A. It calls the constructor of class A, returning an instance. If you change that line to: print [b(item, A) for item in d] you'll get the output you expected. --- -Bill Hamilton [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list
Re: passing class by reference does not work??
On Apr 11, 10:40 am, [EMAIL PROTECTED] (Alex Martelli) wrote: wswilson [EMAIL PROTECTED] wrote: Here is my code: class A(): val = 0 def b(item, a): a.val = a.val + 1 return item + a.val def c(): d = [1, 2, 3] print [b(item, A()) for item in d] c() I expected this to output [2, 4, 6]. However, it outputs [2, 3, 4] which is not what I wanted. I thought that if I passed the A() instance in my list comprehension in c(), then the changes I made to a.val in b() would be reflected in the A() instance next time the list comprehension called b(). But, obviously that is not happening. I'm kinda new at python so I may be missing something obvious here. Yep: a.val = a.val + 1 sets in INSTANCE variable a the value computed on the RHS. A.val (the CLASS variable) is never changed. You're not passing the class, of course, but rather an instance of the class. To increment A.val, you need to assign to the class variable, or write some method in class A which assigns to the class variable. If you want, you can change class A only, leaving all of the rest of your code untouched, with a property (but then A needs to be newstile), e.g.: class A(object): _val = 0 def getval(self): return A._val def setval(self, value): A._val = value val = property(getval, setval) now your code should work as intended: any read access to a.val returns A._val, and any setting of a.val actually sets A._val, as you appear to desire. Alex Thanks, that should work well. I appreciate it. -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On Wed, 11 Apr 2007 13:13:20 +, Antoon Pardon wrote: Lists are designed for sequences of homogeneous items, e.g.: L = [1, 2, 4, 8, 16, 32] while tuples are designed to be more like structs or records, with heterogeneous items, e.g.: T = (Fred, 32, 12.789, {}, None, '\t') I think you are confused. Anything is possible. Last time I heard this homogeneous items stuf, it had nothing to do with the types being the same. They were homogeneous because they somehow belonged together and heterogeneous because they just happened to live together. Similarity of type played no part in calling the data homogeneous or heterogeneous. Nevertheless, regardless of whether the items have the same type or different types, you don't need an index method for heterogeneous items. Like I said, think of a tuple as a struct. Even if the fields of the struct all have the same type, there is little reason to ever ask which field has such-and-such a value?. Anyway, that's was the reasoning. As I've said, tuples do double-duty as both immutable lists and struct-like objects. I wouldn't object to them growing index and count methods -- but you won't see me volunteering to write the code for that, because I don't care that much. So how about it? All you people who desperately want tuples to grow an index method -- will any of you donate your time to write and maintain the code? -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
Re: run function in separate process
[EMAIL PROTECTED] wrote: ... somebody points me to a web page/reference that says how to call a function then reclaim the whole memory back in python. Meanwhile, the best that I could do is fork a process, compute the results, and return them back to the parent process. This I That's my favorite way to ensure that all resources get reclaimed: let the operating system do the job. implemented in the following function, which is kinda working for me now, but I am sure it can be much improved. There should be a better way to return the result that a temporary file, for example. I You can use a pipe. I.e. (untested code): def run_in_separate_process(f, *a, **k): import os, sys, cPickle pread, pwrite = os.pipe() pid = os.fork() if pid0: os.close(pwrite) with os.fdopen(pread, 'rb') as f: return cPickle.load(f) else: os.close(pread) result = f(*a, **k) with os.fdopen(pwrite, 'wb') as f: cPickle.dump(f, -1) sys.exit() Using cPickle instead of pickle, and a negative protocol (on the files pedantically specified as binary:-), meaning the latest and greatest available pickling protocol, rather than the default 0, should improve performance. Alex -- http://mail.python.org/mailman/listinfo/python-list
Seeking list of Python applications on OS X
Hello, I am seeking to update this wiki page, which lists Mac OS X applications using Python in a significant way: http://wiki.python.org/moin/MacPython/MacSoftwareUsingPython This query is directed at developers of cross-platform Python applications who provide full support for the Mac. By full support, I mean that you have Mac-specific builds of your application, deployed in a Mac-specific manner (wrapped with py2app or bundlebuilder into a standalone application with its own icon, for drag-and-drop installation), and that the application run natively in the Mac Aqua environment (no X11). This query focuses mainly on desktop applications developed with one of the major cross-platform toolkits (Tkinter, wxPython, PyQt; Gtk does not run natively on the Mac). Please post to c.l.p. with your replies and I will add the appropriate response to the wiki. Thanks. -- Kevin Walzer Code by Kevin http://www.codebykevin.com -- http://mail.python.org/mailman/listinfo/python-list
is asynchat broken or just not intended to work like other dispatchers? [PATCH]
Simple asyncore application where I wanted to use an explicit map (1) rather than the automagic default. Worked fine until I tried to use asynchat to handle an interactive status and control connection (3) and found it had no notion about using a non-default map. After convincing myself that this must be a simple oversight in asynchat, I applied the following patch to a local copy. Of course now I have to carry around this hacked-up version of asynchat, which sort of defeats the batteries included simplicity thing. :-( Anyway, in hopes that maybe in a few years I can lose that ugly duplication, I offer this patch for what I assume was an oversight: --- my_chat.py (revision 6) +++ my_chat.py (working copy) @@ -59,11 +59,11 @@ ac_in_buffer_size = 4096 ac_out_buffer_size = 4096 -def __init__ (self, conn=None): +def __init__ (self, conn=None, map=None): self.ac_in_buffer = '' self.ac_out_buffer = '' self.producer_fifo = fifo() -asyncore.dispatcher.__init__ (self, conn) +asyncore.dispatcher.__init__ (self, conn, map) def collect_incoming_data(self, data): raise NotImplementedError, must be implemented in subclass (rev 6 was the checkin of the stock asynchat.py under a different name, of course) For the docs I cannot make a specific suggestion: it depends on what is intended to be exposed and what would be better ignored outside the implementation. It's at moments like this that I miss the explicit declaration of things as public/protected/private from C++ a little. Sure, it's rather officious, but it has value in reflecting some important design criteria in the code... it's better than nothing. (1) maybe I guessed wrong on this score about what was the yuckier un-or-incompletely-documented bit to use, but non-default maps are at least mentioned in asyncore's docs, and when you dig into the code (2) to see what's going on that's not documented (4) it's obvious that at least the dispatchers defined in asyncore.py are careful to allow for the optional map argument, so I think it was reasonable to prefer to use my own mapping with this interface rather than reaching in and frobbing asyncore's socket_map... especially after puzzling over the mysterious way it's defined (maybe?) in asyncore. (2) code is NOT documentation, dammit. Well, it's not *good* documentation, and everyone knows it, as Python's docstrings and XP's no written docs, but we have to talk and talk about what's not written down (aren't oral traditions grand? not to mention fragile...) stand in proof of, just to cite a couple obvious examples. (3) actually it was the other way around: I had that working just fine using the default mapping, and it was when I moved from the playing around to see if asyn* is suitable to something a little more useful that I ran into the problem. Whatever. (4) del_channel was another gem - that seems to be the clean way for a channel to shut itself down from within its input handling code, as for example that simple interactive status and control thing when it gets the quit command. Not so much as a hint of it in the docs. I hope that's not because using it is in fact a bad idea - I had to guess from looking at the code, so I can't know what the design intent was. :-( -- I personally refuse to use inferior tools because of ideology. In fact, I will go as far as saying that making excuses for bad tools due to ideology is _stupid_, and people who do that think with their gonads, not their brains. -- Linus -- http://mail.python.org/mailman/listinfo/python-list
Re: No zlib in Python 2.4.4
On 2007-04-11, [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: On Apr 11, 9:14 am, Marc 'BlackJack' Rintsch [EMAIL PROTECTED] wrote: In [EMAIL PROTECTED], shamzz wrote: Shouldn't zlib be compiled as a Python module automatically in Python 2.4.4. I'm guessing Python is doing some kind of check and not compiling zlib for some reason? It only gets compiled if the header files can be found. Is the zlib-dev or zlib-devel package installed? Thanks for the fast reply... this seems to be going off topic from Python so sorry about that. But yep, I've just installed (through YAST) the zlib-devel and zlib- devel-32 packages (zlib and zlib-32bit are already installed). I then did a make clean/configure/make/make install with the Python source, but it's still not compiling with zlib. carefully inspect the configure output. Where it gets to the zlib output, it should print a message about whether it found the libraries or not. Usually, in these situations, I find myself looking closely at the output in config.log to see exactly what gcc command it tried to run. If that doesn't help, take a look at the 'make' output. It might be that there is no check for zlib in configure, but Python goes to build the module and fails due to missing headers or libraries. Dave -- http://mail.python.org/mailman/listinfo/python-list
UnicodeEncodeError - a bit out of my element...
Hi all, I'm trying to parse an email message, but am running into this exception. Traceback (most recent call last): File wa.py, line 336, in ? main() File wa.py, line 332, in main print out['msg'] UnicodeEncodeError: 'ascii' codec can't encode character u'\xd6' in position 238: ordinal not in range(128) How can I decode/encode this string to print to stdout and send again in another email? Do I have to know what language the email is in? Thanks! Erik -- http://mail.python.org/mailman/listinfo/python-list
descriptor object for an attribute?
Is there a standard way to get a descriptor object for an arbitrary object attribute - independent of whether it uses the descriptor/ property protocol or not. I want some kind of handle/reference/ pointer to an attribute. I know I could make my own class to do this (using the __dict__ of the object and the attribute name), but I would like to use something standard (at least a protocol) if it exists. All that is needed in the protocol is getter and setter methods (like __get__ and __set__ in a descriptor). Of course it would be nice to have a better syntax than those method names of the descriptor (I've seen unary + for the getter and += for the setter somewhere on the web). Now the question I'm going to get is: why? I've used ruby (everything is also already a reference to an object) for several years and been through this discussion. I realize that 90% of the time you want some kind of reference/pointer, there is a better way. But there are those occassions where the most elegant solution is with the concept of a reference. An obvious example in python today is a descriptor object - it looks just like a reference (but is not a pointer) - having getter and setter methods. The times in C/C++ where the elegant solution is with a pointer to a pointer is also another example. That is the situation I'm dealing with now. I'm using a singly linked list (as opposed to a normal list/ array for performance/memory reasons). If you want to insert/delete a node at a certain point in the list, the best thing to have access to would be link (attribute or even local variable) where you want to insert/delete. Without a reference, you'd end up with a less than ideal solution: a) do the operation based on the previous node and special case the situation where you want to operate at the head (no previous node), b) do the operation based on the previous node and add a dummy head node, or c) make the list doubly linked, do the operation based on the current node, and either special case the head or add a dummy head node. Really I'm dealing with a directed graph structure, but part of it uses singly linked lists (the children of a parent). Having a handle on any of the links in the graph would be a useful thing. -- http://mail.python.org/mailman/listinfo/python-list
Re: run function in separate process
Thanks Mike for you answer. I will use the occasion to add some comments on the links and on my approach. I am programming in Python 2.5, mainly to avoid the bug that memory arenas were never freed before. The program is working on both Mac OS X (intel) and Linux, so I prefer portable approaches. On Apr 11, 3:34 pm, [EMAIL PROTECTED] wrote: [...] I found a post on a similar topic that looks like it may give you some ideas: http://mail.python.org/pipermail/python-list/2004-October/285400.html I see the comment about using mmap as valuable. I tried to use that using numpy.memmap but I wasn't successful. I don't remember why at the moment. The other tricks are problem-dependent, and my case is not like them (I believe). http://www.artima.com/forums/flat.jsp?forum=106thread=174099 Good ideas. I hope that python will grow a replacable gc one day. I think that pypy already has a choice at the moment. http://www.nabble.com/memory-manage-in-python-fu-t3386442.html http://www.thescripts.com/forum/thread620226.html Bingo! This thread actually reaches more or less the same conclusion. In fact, Alex Martelli describes the exact pattern in http://mail.python.org/pipermail/python-list/2007-March/431910.html I probably got the idea from a previous thread by him or somebody else. It should be much earlier than March, though, as my program was working since last year. So, let's say the function I have written is an implementation of Alex's architectural pattern. Probably makes it easier to get in the cookbook:) Regards, Muhammad -- http://mail.python.org/mailman/listinfo/python-list
Re: descriptor object for an attribute?
Eric Mahurin wrote: Is there a standard way to get a descriptor object for an arbitrary object attribute - independent of whether it uses the descriptor/ property protocol or not. I want some kind of handle/reference/ pointer to an attribute. I know I could make my own class to do this (using the __dict__ of the object and the attribute name), but I would like to use something standard (at least a protocol) if it exists. All that is needed in the protocol is getter and setter methods (like __get__ and __set__ in a descriptor). Of course it would be nice to have a better syntax than those method names of the descriptor (I've seen unary + for the getter and += for the setter somewhere on the web). Now the question I'm going to get is: why? I've used ruby (everything is also already a reference to an object) for several years and been through this discussion. I realize that 90% of the time you want some kind of reference/pointer, there is a better way. But there are those occassions where the most elegant solution is with the concept of a reference. An obvious example in python today is a descriptor object - it looks just like a reference (but is not a pointer) - having getter and setter methods. The times in C/C++ where the elegant solution is with a pointer to a pointer is also another example. That is the situation I'm dealing with now. I'm using a singly linked list (as opposed to a normal list/ array for performance/memory reasons). If you want to insert/delete a node at a certain point in the list, the best thing to have access to would be link (attribute or even local variable) where you want to insert/delete. Without a reference, you'd end up with a less than ideal solution: a) do the operation based on the previous node and special case the situation where you want to operate at the head (no previous node), b) do the operation based on the previous node and add a dummy head node, or c) make the list doubly linked, do the operation based on the current node, and either special case the head or add a dummy head node. Really I'm dealing with a directed graph structure, but part of it uses singly linked lists (the children of a parent). Having a handle on any of the links in the graph would be a useful thing. I believe you are looking for setattr(obj, attr, value) and getattr(obj, attr) functions. Since everything in python its a pointer to an object, I wasn't able to understand EXACTLY what you were asking (an example would help). -Larry -- http://mail.python.org/mailman/listinfo/python-list
SQLObject 0.7.5
Hello! I'm pleased to announce the 0.7.5 release of SQLObject. What is SQLObject = SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, and Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also known as SAPDB). Where is SQLObject == Site: http://sqlobject.org Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Archives: http://news.gmane.org/gmane.comp.python.sqlobject Download: http://cheeseshop.python.org/pypi/SQLObject/0.7.5 News and changes: http://sqlobject.org/docs/News.html What's New == News since 0.7.4 * Fixed a bug in DateValidator caused by datetime being a subclass of date. * Fixed test_deep_inheritance.py - setup classes in the correct order (required for Postgres 8.0+ which is strict about referential integrity). For a more complete list, please see the news: http://sqlobject.org/docs/News.html Oleg. -- Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED] Programmers don't die, they just GOSUB without RETURN. -- http://mail.python.org/mailman/listinfo/python-list
Re: run function in separate process
On Apr 11, 3:58 pm, [EMAIL PROTECTED] (Alex Martelli) wrote: [...] That's my favorite way to ensure that all resources get reclaimed: let the operating system do the job. Thanks a lot, Alex, for confirming the basic idea. I will be playing with your function later today, and will give more feedback. I think I avoided the pipe on the mistaken belief that pipes cannot be binary. I know, I should've tested. And I avoided pickle at the time because I had a structure that was unpicklable (grown by me using a mixture of python, C, ctypes and pyrex at the time). The structure is improved now, and I will go for the more standard approach.. Regards, Muhammad -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 11 Apr, 16:14, Chris Mellon [EMAIL PROTECTED] wrote: If you want a language that just adds whatever methods anyone thinks of, along with whatever aliases for it any can think of, to every data type, you know where to find Ruby. Nobody is asking for Ruby, as far as I can see. I even submitted a quick patch to provide tuple.index (a method that has already been thought of), given the triviality of the solution, but you won't find me asking for a bundle of different convenience methods with all their aliases on every object, regardless of whether you can monkey-patch them after the fact or not. For example: http://www.ruby-doc.org/core/classes/Array.html#M002235 There's a pretty big chasm between wanting to be able to apply existing functionality exactly to a type which for some reason never acquired it and embracing the method proliferation and other low- hanging fruit-picking seemingly popular in Ruby. In observing this, one can make objective decisions about things like this... http://wiki.python.org/moin/AbstractBaseClasses Note that, in that document, index and count are methods of MutableSequence. Quite why this should be from a conceptual perspective is baffling, but don't underestimate the legacy influence in such matters. Paul -- http://mail.python.org/mailman/listinfo/python-list
SQLObject 0.8.2
Hello! I'm pleased to announce the 0.8.2 release of SQLObject. What is SQLObject = SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, and Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also known as SAPDB). Where is SQLObject == Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Archives: http://news.gmane.org/gmane.comp.python.sqlobject Download: http://cheeseshop.python.org/pypi/SQLObject/0.8.2 News and changes: http://sqlobject.org/News.html What's New == News since 0.8.1 * Fixed ConnectionHub.doInTransaction() - if the original connection was processConnection - reset processConnection, not threadConnection. * Fixed a bug in DateValidator caused by datetime being a subclass of date. * Fixed test_deep_inheritance.py - setup classes in the correct order (required for Postgres 8.0+ which is strict about referential integrity). For a more complete list, please see the news: http://sqlobject.org/News.html Oleg. -- Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED] Programmers don't die, they just GOSUB without RETURN. -- http://mail.python.org/mailman/listinfo/python-list
Re: troubles building python 2.5 on Windows XP x64 Windows Server 2003 sp1 Platform SDK
On Apr 4, 5:04 pm, Martin v. Löwis [EMAIL PROTECTED] wrote: [EMAIL PROTECTED] schrieb: I am needing to buildpython2.5 on Windows XP x64 Windows Server 2003 sp1PlatformSDKand am not finding anything documented on the process to use. Has anyone had any success with this? I did - I built the official binaries with it. If so has anyone documented it? The documentation that resides in pcbuild/readme.txt is not helpful at all. Did you try to follow it? If so, what precisely did you fail at? [in another message] This doc has not been updated since the 64 bit compilers came out officially. That is not true. The documentation was last updated on 2006-07-14, which is after an AMD-64SDKwas released. It doesn't make a whole lot of sense of what steps you should follow to buildpython. I saw a link on the comp.lang.python that had the steps, but that link doesn't go anywhere now. I had to jump through some hoops to get it to build on VC 2005 64 bit, but that at least had an IDE to use If you use vsextcomp, you also have an IDE to do the build. This is indeed how the official AMD-64 binaries forPython2.5 were produced. Regards, Martin I guess I am a little confused on the directions for the vsextcomp. I don't see an IDE for the vsextcomp. Do you know of any explicit directions on how to do this build? -- http://mail.python.org/mailman/listinfo/python-list
Re: tuples, index method, Python's design
On 11 Apr 2007 08:37:39 -0700, Paul Boddie [EMAIL PROTECTED] wrote: On 11 Apr, 16:14, Chris Mellon [EMAIL PROTECTED] wrote: If you want a language that just adds whatever methods anyone thinks of, along with whatever aliases for it any can think of, to every data type, you know where to find Ruby. Nobody is asking for Ruby, as far as I can see. I even submitted a quick patch to provide tuple.index (a method that has already been thought of), given the triviality of the solution, but you won't find me asking for a bundle of different convenience methods with all their aliases on every object, regardless of whether you can monkey-patch them after the fact or not. For example: Note that the mail I responded to was using being drunk, not knowing any better, and having fun as use cases for the method. That sounds like Ruby-style method proliferation to me ;) Note that, in that document, index and count are methods of MutableSequence. Quite why this should be from a conceptual perspective is baffling, but don't underestimate the legacy influence in such matters. Well, I'm not Guido obviously, but here's why I don't find it baffling. There are 2 main reasons why you'd use an immutable sequence for something: 1) You want to make sure it's not modified by a callee. This is unPythonic and mostly unnecessary. Pass them a copy if you're that paranoid. 2) Because you are representing a known, structured data type. This can be either unordered, in which case index() is meaningless (as in frozenset), or it can be ordered, in which case the order is an implicit part of the structure. In such a case, index() is also meaningless, and should never be necessary. The primary use case for index on tuple is because people use them as immutable lists. That's fine as far as it goes, but I want to know what the justification is for using an immutable list, and if you have one why you need to use index() on it. There's only 2 use cases I've heard so far for that: certain types of binary parsing, which I don't think is common enough to justify modification to the language core, and third party libs returning silly things, which I *certainly* don't think justifies changes to the language core. I'm pretty against tuples growing index() ever. I think that if there is a real need (and just because I haven't seen one doesn't mean it's not there) for an immutable list, the introduction of fozenlist() to the collections module (or something) would be a better solution. On the other hand, if tuples grew list methods and we got a new immutable sequence that had order, unpacking, and *named fields* along the lines of Pascal records I'd be happy with that too. -- http://mail.python.org/mailman/listinfo/python-list
Re: UnicodeEncodeError - a bit out of my element...
On Apr 11, 10:16 am, erikcw [EMAIL PROTECTED] wrote: Hi all, I'm trying to parse an email message, but am running into this exception. Traceback (most recent call last): File wa.py, line 336, in ? main() File wa.py, line 332, in main print out['msg'] UnicodeEncodeError: 'ascii' codec can't encode character u'\xd6' in position 238: ordinal not in range(128) How can I decode/encode this string to print to stdout and send again in another email? Do I have to know what language the email is in? Thanks! Erik You'll need to do some encoding/decoding work. Check out the following links on unicode: http://www.reportlab.com/i18n/python_unicode_tutorial.html http://www.amk.ca/python/howto/unicode http://www.jorendorff.com/articles/unicode/python.html And here's a few links on parsing: http://docs.python.org/api/arg-parsing.html http://www.diveintopython.org/xml_processing/unicode.html Probably more information than you need, but it should help answer your question (and maybe any future questions about Unicode). Mike -- http://mail.python.org/mailman/listinfo/python-list
Re: UnicodeEncodeError - a bit out of my element...
I cut from Sam Python Phrasebook Converting Unicode to Local Strings import string locStr = El uniStr = uNi\u00F1o print uniStr.encode('utf-8') print uniStr.encode('utf-16') print uniStr.encode('iso-8859-1') #Combine local and unicode results #in new unicode string newStr = locStr+uniStr print newStr.encode('iso-8859-1') #ascii will error because character '\xF1' #is out of range asciiStr = newStr.encode('iso-8859-1') asciiStr =asciiStr.translate(\ string.maketrans('\xF1','n'), '') print asciiStr.encode('ascii') print newStr.encode('ascii') unicode_str.py Niño ÿN|I|ñ|o Niño El Niño El Nino Traceback (most recent call last): File C:\books\python\CH2\code\unicode_str.py, line 19, in ? print newStr.encode('ascii') UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 5: ordinal not in range(128) On Wed, Apr 11, 2007 at 08:16:07AM -0700, erikcw wrote: Hi all, I'm trying to parse an email message, but am running into this exception. Traceback (most recent call last): File wa.py, line 336, in ? main() File wa.py, line 332, in main print out['msg'] UnicodeEncodeError: 'ascii' codec can't encode character u'\xd6' in position 238: ordinal not in range(128) How can I decode/encode this string to print to stdout and send again in another email? Do I have to know what language the email is in? Thanks! Erik -- http://mail.python.org/mailman/listinfo/python-list signature.asc Description: Digital signature -- http://mail.python.org/mailman/listinfo/python-list
Re: Seeking list of Python applications on OS X
Hi Kevin, 2007/4/11, Kevin Walzer [EMAIL PROTECTED]: Hello, I am seeking to update this wiki page, which lists Mac OS X applications using Python in a significant way: Task Coach is developed with python and wxPython and is distributed as dmg. See http://www.taskcoach.org Cheers, Frank -- http://mail.python.org/mailman/listinfo/python-list
bittorent
Hello Im planing playing a bit whit bittorrent, but I'm having some trouble about where to start. So if anyone could point me in the right direction it would be much appreciated. The best would be if there are some already written modules that handle downloading and seeding torrents, but if that cant be found a good source on how one dose to build some sort of bitorrent client would be nice. thanks in advance -- http://mail.python.org/mailman/listinfo/python-list
SQLObject 0.9.0b1
Hello! I'm pleased to announce the 0.9.0b1 release of SQLObject, the first beta of the upcoming 0.9 release. What is SQLObject = SQLObject is an object-relational mapper. Your database tables are described as classes, and rows are instances of those classes. SQLObject is meant to be easy to use and quick to get started with. SQLObject supports a number of backends: MySQL, PostgreSQL, SQLite, and Firebird. It also has newly added support for Sybase, MSSQL and MaxDB (also known as SAPDB). Where is SQLObject == Site: http://sqlobject.org Development: http://sqlobject.org/devel/ Mailing list: https://lists.sourceforge.net/mailman/listinfo/sqlobject-discuss Archives: http://news.gmane.org/gmane.comp.python.sqlobject Download: http://cheeseshop.python.org/pypi/SQLObject/0.9.0b1 News and changes: http://sqlobject.org/News.html What's New == News since 0.8 -- Features Interface * Support for Python 2.2 has been declared obsolete. * Removed actively deprecated attributes; lowered deprecation level for other attributes to be removed after 0.9. * SQLite connection got columnsFromSchema(). Now all connections fully support fromDatabase. There are two version of columnsFromSchema() for SQLite - one parses the result of SELECT sql FROM sqlite_master and the other uses PRAGMA table_info; the user can choose one over the other by using use_table_info parameter in DB URI; default is False as the pragma is available only in the later versions of SQLite. * Changed connection.delColumn(): the first argument is sqlmeta, not tableName (required for SQLite). * SQLite connection got delColumn(). Now all connections fully support delColumn(). As SQLite backend doesn't implement ALTER TABLE DROP COLUMN delColumn() is implemented by creating a new table without the column, copying all data, dropping the original table and renaming the new table. * Versioning_. .. _Versioning: Versioning.html * MySQLConnection got new keyword conv - a list of custom converters. * Use logging if it's available and is configured via DB URI. * New columns: TimestampCol to support MySQL TIMESTAMP type; SetCol to support MySQL SET type; TinyIntCol for TINYINT; SmallIntCol for SMALLINT; MediumIntCol for MEDIUMINT; BigIntCol for BIGINT. Small Features -- * Support for MySQL INT type attributes: UNSIGNED, ZEROFILL. * Support for DEFAULT SQL attribute via defaultSQL keyword argument. * Support for MySQL storage ENGINEs. * cls.tableExists() as a shortcut for conn.tableExists(cls.sqlmeta.table). * cls.deleteMany(), cls.deleteBy(). Bug Fixes - * idName can be inherited from the parent sqlmeta class. For a more complete list, please see the news: http://sqlobject.org/News.html Oleg. -- Oleg Broytmannhttp://phd.pp.ru/[EMAIL PROTECTED] Programmers don't die, they just GOSUB without RETURN. -- http://mail.python.org/mailman/listinfo/python-list
Shebang or Hashbang for modules or not?
Should a Python module not intended to be executed have shebang/ hashbang (e.g., #!/usr/bin/env python) or not? I'm used to having a shebang in every .py file but I recently heard someone argue that shebangs were only appropriate for Python code intended to be executable (i.e., run from the command line). -- http://mail.python.org/mailman/listinfo/python-list
Re: Parsing log in SQL DB to change IPs to hostnames
KDawg44 wrote: [ ... ] ohhh okay. thanks so much. I knew that it came out as strings, i guess it makes sense that I would have to send it back IN as a string. Changed that and now it works! THanks so much. I just specified once specific field so that it would not change the whole db on a test run. Thanks so much. It's great that you solved your problem, but please disabuse yourself of the notion that the database returns everything as strings: curs.execute(SELECT * from contact) data = curs.fetchone() for item in data: ... print type(item) ... type 'int' type 'str' type 'str' type 'int' type 'int' type 'NoneType' type 'NoneType' regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://del.icio.us/steve.holden Recent Ramblings http://holdenweb.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list
pop() clarification
As said before I'm new to programming, and I need in depth explaination to understand everything the way I want to know it, call it a personality quirk ;p. With pop() you remove the last element of a list and return its value: Now I know list is a bad name, but for the sake of arguement lets assume its not a built in sequence list = ['this', 'is', 'an', 'example'] list.pop() 'example' list ['this', 'is', 'an'] I understand all that. What I don't understand is why all the documentation I see says, When removing a specific element from a list using pop() it must be in this format: list.pop([i]). At first I took that to mean that list.pop(i) would return some type of error, but it doesn't. I can't find any documentation saying that this rule that I keep reading about (again list.pop([i]) ) is the only format to use when removing a specific element because..with the explaination to follow. Now I'm not stupid enough to believe that I'm the first to try: list = ['this', 'is', 'an', 'example'] list.pop(1) and have it return the desired effect of: 'is' list ['this', 'an', 'example'] I guess simplistically all I'm asking is: Is this just a community agreed upon rule for readability purposes? or Is it a rule that's in place for a reason I'll learn later on? Please keep in mind my intro sentence to this post. I would like a very detailed explaination, or at least a link to a very detailed expression. ONLYof courseif the explaination isn't, well it just is because we all agreed to use it that way. That explaination I'll understand and except, but with a bit of dissatisfaction. -- http://mail.python.org/mailman/listinfo/python-list
Re: bittorent
Linus Nordström [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] | Hello | Im planing playing a bit whit bittorrent, but I'm having some trouble | about where to start. So if anyone could point me in the right | direction it would be much appreciated. | The best would be if there are some already written modules that | handle downloading and seeding torrents, but if that cant be found a | good source on how one dose to build some sort of bitorrent client | would be nice. Bittorrent, the program, is written in Python. -- http://mail.python.org/mailman/listinfo/python-list
Re: Universal Feed Parser issue
On Apr 11, 12:06 am, Gabriel Genellina [EMAIL PROTECTED] wrote: En Wed, 11 Apr 2007 01:51:13 -0300, i3dmaster [EMAIL PROTECTED] escribió: On Apr 10, 6:45 pm, Gabriel Genellina [EMAIL PROTECTED] wrote: En Tue, 10 Apr 2007 14:58:42 -0300, i3dmaster [EMAIL PROTECTED] escribió: ?xml version='1.0' encoding='utf-8'? feed xmlns='http://www.w3.org/2005/Atom'xmlns:foo='http:// app.example.com/app/2007' ... foo:timezone value='America/Mountain'/foo:timezone foo:status value='confirmed'/foo:status /feed After parsed by feedparser, the timezone element does not get the attribute America/Mountain. Same thing on status element. This does not sound an expected result. I am wondering if it should be considered a bug... Usually it's a good idea to read the documentation... http://www.feedparser.org/docs/namespace-handling.html I did. Perhaps its because of not 100% atom compatible of my feed format? See if I use gnosis xml utility to parse it, it works fine though... The link above answers *exactly* your question - have you actually read the page? -- Gabriel Genellina Hmm... well I don't know if I made my question clear then or you might have misread it?... Anyway, the namespace handling wasn't the issue of this question. feedparser handles it as expected but only when there is a text value associated with it. Look at the rdf file you will see the prism:issn element has a text value but in my case, the foo:timezone element DOES NOT have a text value but a Attribute or maybe attributes... What it looks like is feedparser simply ignores all the attributes when parsing it. This behavior wasn't seen from other xml parsers though. -- http://mail.python.org/mailman/listinfo/python-list
Re: Shebang or Hashbang for modules or not?
On Apr 11, 5:29 pm, Chris Lasher [EMAIL PROTECTED] wrote: Should a Python module not intended to be executed have shebang/ hashbang (e.g., #!/usr/bin/env python) or not? I'm used to having a shebang in every .py file but I recently heard someone argue that shebangs were only appropriate for Python code intended to be executable (i.e., run from the command line). If you don't intend the module to be executable then adding a shebang line and/or setting the files execute bit are both contrary to intended use. You should therefore leave out the shebang/not set the execute bit to emphasise your intended use. During development however, intended use may differ from use when deployed. - Paddy. -- http://mail.python.org/mailman/listinfo/python-list
Creating Unique Dictionary Variables from List
Hello All, I'm attempting to create multiple dictionaries at once, each with unique variable names. The number of dictionaries i need to create depends on the length of a list, which was returned from a previous function. The pseudo code for this problem would be: returnedlist = [x,y,z] count = 0 for i in returnedlist: if count len(returnedlist): # then create a dictionary (beginning with variable dic) for each i with a unique name such that # my unique name would be dic + count Any ideas about this? Greg -- View this message in context: http://www.nabble.com/Creating-Unique-Dictionary-Variables-from-List-tf3560469.html#a9943317 Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list
Creating Unique Dictionary Variables from List
Hello All, I'm attempting to create multiple dictionaries at once, each with unique variable names. The number of dictionaries i need to create depends on the length of a list, which was returned from a previous function. The pseudo code for this problem would be: returnedlist = [x,y,z] count = 0 for i in returnedlist: if count len(returnedlist): # then create a dictionary (beginning with variable dic) and add a unique ending such that # my final dictionary name would be dic + count for each i Any ideas about this? Greg -- View this message in context: http://www.nabble.com/Creating-Unique-Dictionary-Variables-from-List-tf3560470.html#a9943320 Sent from the Python - python-list mailing list archive at Nabble.com. -- http://mail.python.org/mailman/listinfo/python-list