From wesc@deirdre.org Fri Mar 1 06:48:46 2002 From: wesc@deirdre.org (wesc@deirdre.org) Date: Thu, 28 Feb 2002 22:48:46 -0800 (PST) Subject: ANN: SV-SF Bay Area Python user grp (BayPIGgies) mtg 3/13 7:30pm Message-ID: When: March 13, 2002, 7:30-9pm Where: Stanford University, Palo Alto, CA Title: BioPython Jeffrey Chang (School of Medicine, Stanford University) founded the BioPython project in 1999 to promote the development of shared software infrastructure in bioinformatics. His talk will cover the architecture and capabilities of Biopython and also give a sneak preview of the upcoming version. Click on BayPIGgies link below for more info, including driving directions, past meetings, schedule, etc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Core Python Programming", Prentice Hall PTR, © 2001 http://starship.python.net/crew/wesc/cpp/ Silicon Valley-San Francisco Bay Area Python Users Group (BayPIGgies) http://deirdre.org/baypiggies wesley.j.chun :: wesc@deirdre.org cyberweb.consulting : henderson, nv : cyberweb@rocketmail.com http://roadkill.com/~wesc/cyberweb/ From python@rcn.com Mon Mar 4 13:50:36 2002 From: python@rcn.com (Raymond Hettinger) Date: Mon, 4 Mar 2002 08:50:36 -0500 Subject: [ANN] PEP 279 version 1.5 Message-ID: PEP 279 -- Enhanced Generators has been updated: http://python.sourceforge.net/peps/pep-0279.html Additional comments are solicited before it is sent to Guido for pronouncement. Raymond Hettinger Changes: -- Added link to a pure python reference implementation and example code -- indexed() proposal compared and contrasted to PEP 212 -- added pros and cons of built-ins vs. a separate module -- discussion of restartability factored-out to separate section -- generator comprehensions presented without restartable class wrapper -- 'yield' to be an expression rather than statement -- .throw syntax revised to exactly match 'raise' -- try/finally prohibition in generators as another argument for .throw() -- alternative names for 'throw' listed -- referenced Oren Tirosh's work in the XLazy library -- minor wording, spelling, and formatting changes through-out From bh@intevation.de Mon Mar 4 18:41:33 2002 From: bh@intevation.de (Bernhard Herzog) Date: 04 Mar 2002 19:41:33 +0100 Subject: Sketch 0.6.13 Message-ID: Sketch stable 0.6.13 released Sketch is closest to the goal of becoming an universal drawing application for GNU/Linux [...] (LinuxUser 9/2001, pp 40, translated from German) This latest release of the leading Free Software Vector Drawing application, fixes a minor security hole and adds often requested multi-line text handling. http://sketch.sourceforge.net/ Everybody running a stable sketch version should upgrade to 0.6.13. Note a new way of contributing to Sketch through minipayments (see below). Bernhard Herzog, March 2nd, 2002 What's new ========== * Multi-line Text Handling The multi-line plugin contributed by Christof Ecker makes designing covers and posters with Sketch a lot easier. It is now possible to insert and independently edit complete text blocks. Through the modular design of Sketch's data-format, the resulting files can still be edited with earlier versions of Sketch. This nicely blends in with the curvetext and geoobject add-ons to bring you a more complete set of functionality for print design for maps and flyers. * Updated import filters Acorn Drawfile import by David Boddie. Wmf import filter supports PolyPolylines by Antoon Pardon. SVG import filter parses paths more correctly now. Illustrator import filter understands text alignment now. * new command line conversion tools: skconvert and sk2ppm Skconvert can be used to translate vector formats which Sketch understands without starting the GUI. Sk2ppm writes out raster images. * simple color separation Sketch supports exporting an image with one .eps file per color. This is just simple color separation, but should be suitable for spot-color printing. * Security fix for included external eps files. The quoting of EPS filenames when calling ghostscript for preview rendering purposes was flawed. Existence of the filename is tested before this call, somewhat limiting the way this could be exploited. For rest, check the release notes: http://sketch.sourceforge.net/relnotes.html Contributions ============= Sketch is developed by Bernhard Herzog with help from volunteers. Beside the possibility to contribute your time and give feedback, report bugs, help users, write documentation or add code, there is also the possibility to buy developers time for Sketch. This is a way of contributing with money and accelerate development. This 0.6.13 release was supported by visionary individuals who bought development time which was possible for the first time. If Sketch is useful for you, please consider paying for it. http://sketch.sourceforge.net/payments.html Many thanks go to all contributers, they make it possible to bring you a vector drawing applications with all needed freedoms and power. What is Sketch? =============== Sketch is the leading free vector drawing program for GNU/Linux and other unices. It's intended to be a flexible and powerful tool for illustrations, diagrams and other purposes. It has advanced features like gradients, text along a path and clip masks and is fully scriptable due to its implementation in a combination of Python and C. The stable series uses TK as GUI. The development version builds on GTK+. Sketch is developed by Bernhard Herzog and released as Free Software under the Lesser GNU Public License (LGPL). http://sketch.sourceforge.net/ From inigoserna@terra.es Mon Mar 4 16:48:34 2002 From: inigoserna@terra.es (=?ISO-8859-1?Q?I=F1igo?= Serna) Date: 04 Mar 2002 17:48:34 +0100 Subject: ANN: lfm 0.8 Message-ID: --=-kH6uTF5G+hBLedkFeH+I Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello,=20 I've uploaded lfm v0.8 on its web site:=20 http://www.terra.es/personal7/inigoserna/lfm [With this release, I have finished all the features I want for lfm,=20 so I hope to release v1.0 in May. These 2 months will be spent fixing bugs and maybe adding features people want. Nevertheless current version is very robust and stable, I use it daily without problems.] lfm is a 'midnight commander'-clone written in Python and licensed under GNU Public License. It should work on any UNIX with a modern (n)curses library and Python curses module compiled in. See README file or visit the web page for more information.=20 Changes since version 0.7:=20 Version 0.8 ("Close to Paradise") - 2002/03/04: + Implemented VFS feature to enter into .tar.gz and .tar.bz2 files + Panelize vfs option in find/grep implemented + Tree panel implemented + 'lfm' and 'pyview' are simple scripts now, not just a copy of the .py f= iles> __init__.py contains global variables now + A new message window is used to show work in progress, in place of a message in status bar. 'run_thread' function has been cleaned too + Copy / move features now use my own function to walk trees, instead of 'shutil.copytree' which originates some problems and bugs + In ChangePermissions window, the cursor movement is circular now + Change copyright date to years 2001-2 + I don't need a crypt / uncrypt feature, so eliminated from TODO list + Many bug fixes and functions rewrites. See ChangeLog for complete list - lfm: * if panel2 shows 'a' file in panel, and in panel1 'a' is moved o= r deleted, lfm crashes * after moving a file cursor goes to next directory as deletion d= oes * catching an exception after not been able to copy =3D> it crash= ed when trying to delete copied files * "messages.SelectItem, messages.FindfilesWin, messages.MenuWin, messages.ChangePerms: upperleft corner disappears" * findgrep: fix bug: if selected file has a ':' in name - pyview:=09 * changing 'addch' by 'addstr' shows individual chars >=3D 0xA0 (meta chars) correctly, neither in reversed video or as 2 chars * "if wrap mode =3D> fix prev/next page & up/down cursor". Now=20 they move to screen lines, not to physical lines Best regards,=20 I=F1igo Serna --=-kH6uTF5G+hBLedkFeH+I Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQA8g6VifN63/+cBjZoRArb0AJ4/bhvRg3ODwctDJe4Nq4nZ8bHbqgCglXL7 iD1HrFg1jzbaaTTZfnZJl5o= =F+1i -----END PGP SIGNATURE----- --=-kH6uTF5G+hBLedkFeH+I-- From gritsch@iue.tuwien.ac.at Mon Mar 4 22:26:53 2002 From: gritsch@iue.tuwien.ac.at (Markus Gritsch) Date: Mon, 04 Mar 2002 23:26:53 +0100 Subject: ANN: VideoCapture 0.7 released Message-ID: VideoCapture-0.7 ================ URL: ---- http://stud4.tuwien.ac.at/~e9326522/VideoCapture/ What it is: ----------- VideoCapture is a Python extension for Win32 which makes it possible to access video-capture devices (e.g. a USB webcam, a TV-card, ...). What is new in version 0.7: --------------------------- *) Replaced the .gif fonts by .png fonts, since PIL shows a memory leak when using .gif fonts. Remove the files 'helvB08.gif' and 'helvetica-10.gif' in the Lib folder of your Python installation if you have used a version of VideoCapture prior to 0.7!! *) Replaced displayPropertyPage() by displayCaptureFilterProperties() and displayCapturePinProperties(). This finally allows selecting things like the video size used during capturing for every kind of device-drivers (now also for WDM drivers, previously only for VfW drivers). *) Since there were some memory-leak issues with some device drivers when the filter graph was started and stopped for each capture, the graph is now continuously running. Beside the solved memory issue this has the big advantage, that taking snapshots can be done *really* fast now. Taking 10 and more snapshots per second is no problem :-) *) scp can now also be performed with the pscp.exe program from PuTTY. *) Fixed a minor memory leak by freeing MediaType.pbFormat. *) Added the DirectShow AMCAP utility which can be used to check whether the capture device is compatible with VideoCapture. Enjoy, Markus From jicondon@us.ibm.com Tue Mar 5 19:14:42 2002 From: jicondon@us.ibm.com (dW) Date: 5 Mar 2002 11:14:42 -0800 Subject: Python SOAP libraries - With and without WSDL Message-ID: IBM developerWorks released it second article on Python and SOAP: Continuing their look at Python SOAP implementations, Mike Olson and Uche Ogbuji put the Zolera SOAP Infrastructure (ZSI) through its paces as a SOAP client and server library. They find that ZSI is possibly the best tool for SOAP use under Python right now. http://www-106.ibm.com/developerworks/library/ws-pyth6?open&l=968,t=grws,p=py2 From guido@python.org Tue Mar 5 20:21:56 2002 From: guido@python.org (Guido van Rossum) Date: Tue, 05 Mar 2002 15:21:56 -0500 Subject: ANN: Python Spread Module 1.1 Released Message-ID: I've released version 1.1 of the Spread Module for Python. Tadaaa: http://www.python.org/other/spread/ Changes since release 1.0 ------------------------- - The README recommend using 3.16.2rc1 or later. - Using Spread 3.16.2, it now works on Windows. - Changes to the test suite to make it less accident-prone. - Fixed race conditions having to do with disconnects in multi-threaded programs. When one of the errors CONNECTION_CLOSED or ILLEGAL_SESSION is received, mark the mbox as closed. In addition, use a lock to serialize access to the disconnected flag. - Fixed a memory leak that leaked about 50 bytes per mbox.receive() call. Enjoy! --Guido van Rossum (home page: http://www.python.org/~guido/) From bkelley@wi.mit.edu Tue Mar 5 22:12:43 2002 From: bkelley@wi.mit.edu (Brian Kelley) Date: Tue, 05 Mar 2002 17:12:43 -0500 Subject: [ANN] Frowns Chemoinformatics System 0.2 released Message-ID: Frowns is a chemoinformatics system written almost entirely in python. New features in version 0.2 * Poor depiction of arbitrary molecules! *NEW* requires installing GraphViz from AT&T http://www.research.att.com/sw/tools/graphviz/ * Bug fixes in aromaticity perception, non ring-bonds are no longer modified. Frowns currently includes the following features * Smiles parser * Smarts substructure searching (using the bindings to VFLIB) * SD file parser with SD field manipulations * Depiction for SD files with coordinates * Molecule Fingerprint generation * Several forms of Ring Detection available * Simple aromaticity perception * Full source code You can download the latest version of frowns at http://staffa.wi.mit.edu/people/kelley/ Or you can just skim the tutorial at http://staffa.wi.mit.edu/people/kelley/frowns.html Disclaimer ========== This software reimplements some of the functionality of the Daylight toolkits but it is not meant as a replacement. Daylight's code has higher performance, commercial support, more users, more complete testing, documentation, industry backing, and a cool set of people working for them. Plus, you can run PyDaylight located at http://www.dalkescientific.com/PyDaylight/ if you don't like the C API. Given that, you may want to use FROWNS if you; * are interested in the implementation details of chemical information software * want to teach same * have ideas that can't be implemented in the Daylight toolkit (new types of ring or aromaticity perception, support for different operating systems and platforms, etc.) * don't have the financial resources for the Daylight tools * just plain can't stand the idea of non-free software * have nothing better to do in your free time. Brian Kelley Whitehead Institute for Biomedical Research From cook@pyzine.com Wed Mar 6 00:49:40 2002 From: cook@pyzine.com (Bryan Richard) Date: 5 Mar 2002 16:49:40 -0800 Subject: Py Announces Articles to Appear in First Issue Message-ID: Py, a technical journal for Python developers, announced today the list of articles for it's first issue (01.01), due to be published April 2002. Articles included in the first issue: - Scientific Python: Introducing Numeric by Eric Jones - Simple CGI Template Processing by Michael P. Soulier - Extending Python with C - Part 1 by Alex Martelli - Image Viewing with TKinter by Blake Garretson - Threading and the Global Interpreter Lock by Aahz Scientific Python: Introducing Numeric is the first installment in an ongoing column on leveraging Python for scientific computing Eric Jones was gracious enough to take under his wing. Part 2 of Alex Martelli's (co-editor of the Python Cookbook from O'Reilly) Extending Python with C will appear in Issue 01.02. Preorders for issue 01.01 are available through March 2002 via the web site www.pyzine.com (snail mail and PayPal accepted). Preorder price per issue is US$2.00 domestic (United States) and US$3.00 international. Py is an independent print zine for Python developers. PyZine (www.pyzine.com) is the online home of the print publication Py. perm-link : http://www.pyzine.com/01.01/pr.03052002.phtml Contact Information Bryan Richard [cook@pyzine.com] 214 Main Street #208 El Segundo, CA 90245 vox: 310 322 6682 From altis@semi-retired.com Fri Mar 8 03:51:35 2002 From: altis@semi-retired.com (Kevin Altis) Date: Thu, 7 Mar 2002 19:51:35 -0800 Subject: ANN: Python User Groups page at python.org Message-ID: Python User Groups now have their own page on the Python web site: http://www.python.org/UserGroups.html If your group isn't listed or if your information is out of date, please email webmaster@python.org. If your group has a special event you'd like to see listed on the Events page, please email events@python.org. User groups are a great way to meet other Python users in your local area. Why not start one today? Note, the PUG info used to be a section on the Events page: http://www.python.org/Events.html ka From tim@zope.com Fri Mar 8 06:04:44 2002 From: tim@zope.com (Tim Peters) Date: Fri, 8 Mar 2002 01:04:44 -0500 Subject: PEP Parade Message-ID: Quoting Guido's new "Parade of the PEPs" essay at http://www.python.org/doc/essays/pepparade.html """ To start off Developer's Day at the Python10 conference I gave a keynote ending in what I dubbed "the parade of the PEPs". It was a brief overview of all open PEPs, where I gave my highly personal and subjective opinion for each PEP. Later, I realized that this might have been of interest to other developers. I didn't take notes at the conference, so below is a different set of comments that I created from scratch during a single two-hour sitting on March 7, 2002. """ Since Guido's "highly personal and subjective opinions" are nevertheless destined to circumscribe every waking moment of your Python life, everyone interested in Python development should give it a good read. It's also linked to from the PEP Index page at SourceForge: http://python.sf.net/peps/ Note that Guido wants to keep 2.3 free of new core language features. You can deduce that from reading the essay, or-- like me --you can just believe it because it's true . There's a huge backlog of good ideas for improving the internals and libraries, and I wouldn't be surprised to see the focus remain there for 2.4 too. From chris@psychofx.com Sat Mar 9 14:35:45 2002 From: chris@psychofx.com (Chris Miles) Date: Sun, 10 Mar 2002 01:35:45 +1100 Subject: EDDIE version 0.28 released Message-ID: EDDIE version 0.28 has been released. http://eddie-tool.net/ The EDDIE Tool is a system monitoring, security and performance analysis tool developed entirely in Python. Its key features are portability, powerful configuration and ease of expansion. It is fully threaded and currently supports Solaris, Linux and HPUX. Changes include: bugfixes; improved stability (more thread-safe); many more system stats collected from Solaris. Download: http://eddie-tool.net/download/ CHANGES: http://eddie-tool.net/doc/CHANGES Regards, Chris. -- Chris Miles chris@psychofx.com http://www.psychofx.com/chris/ From twisted@itamarst.org Sat Mar 9 17:39:30 2002 From: twisted@itamarst.org (Itamar Shtull-Trauring) Date: Sat, 09 Mar 2002 12:39:30 -0500 Subject: ANN: Twisted 0.15.5 Message-ID: == Get Twisted == Main Twisted site: http://www.twistedmatrix.com Mirror for downloads: http://twisted.coopweb.org The latest Twisted, v0.15.5, is available now in Debian sid ("unstable"): http://packages.debian.org/unstable/net/twisted.html == What's New? == There have a been a lot of changes since out last c.l.p.a anouncement: - Win32 event loop support - A new GTK+ instant messaging client - Much improved DNS support, including the beginning of a server - Instant messaging server had many improvements - SOCKSv4 proxy server - Much improved mail server - Many more services can be configured via the web - ECO, a small lisp implementation - Log rotation for log files - More testing code (lots more, in fact) - Bug fixes, API improvements and much more. == What is Twisted? == Twisted is an event-based framework for internet applications. It includes a web server, a telnet server, a multiplayer RPG engine, a generic client and server for remote object access, and APIs for creating new protocols and services. Twisted supports integration of the Tk, GTK or wxPython event loop with its main event loop. The Win32 event loop is also supported, as is basic support for running servers on top of Jython. Twisted currently supports the following protocols, all implemented in pure python, most of them as both servers and clients: - FTP - HTTP - SOCKSv4 - SMTP - IRC - telnet - POP3 - AOL's instant messaging TOC - OSCAR, used by AOL-IM as well as ICQ (client only) - DNS - LDAP (client only) - finger - Echo, discard, chargen and friends - Twisted Perspective Broker From p.magwene@snet.net Sat Mar 9 22:05:42 2002 From: p.magwene@snet.net (Paul M) Date: Sat, 09 Mar 2002 22:05:42 GMT Subject: disipyl - a 2D and 3D Python plotting library Message-ID: DESCRIPTION: ----------- disipyl is an object-oriented wrapper around the DISLIN plotting library. DISLIN is a powerful and flexible multiplatform (Win32, Unix, Linux, etc.) library designed for displaying scientific data. DISLIN's author, Helmut Michels, has made available a DISLIN plotting extension for the Python programming language (see http://www.linmpi.mpg.de/dislin/ for more details). disipyl provides a set of classes which represent various aspects of DISLIN plots, as well as providing some easy to use classes for creating commonly used plot formats (e.g. scatter plots, histograms, 3-D surface plots). A major goal in designing the library was to facilitate interactive data exploration and plot creation. Documentation, a tutorial, and a demo program are included. The library has been tested on Win32, Linux, and FreeBSD, but I anticipate that it should work on any platform which can make use of Python, NumPy, and the DISLIN python extensions. Feedback, comments, and critique are gladly accepted (email: paul.magwene@yale.edu). VERSION: ------- This is release 0.5 of disipyl. HISTORY: ------- disipyl is a complete re-write of an earlier plotting library called pxDislin. While similar in spirit, disipyl is much more flexible and much more easier to use than pxDislin. URL: ---- You can find disipyl at: http://pantheon.yale.edu/~pmm34/disipyl.html From djc@object-craft.com.au Sun Mar 10 05:58:25 2002 From: djc@object-craft.com.au (Dave Cole) Date: 10 Mar 2002 16:58:25 +1100 Subject: Sybase module 0.33 released Message-ID: What is it: The Sybase module provides a Python interface to the Sybase relational database system. It supports all of the Python Database API, version 2.0 with extensions. Note: Since the 0.32 release I have come to the realisation that the Sybase dynamic SQL functionality is not nearly general enough to use for correct DB-API functionality. I have thrown up my hands and gone back to the drawing board with the high level Sybase.py module. There were four pre-releases of the module. The following is a summary of what has changed since 0.32: 1) Bulkcopy support has been temporarily removed from Sybase.py. The low level support is still present in the sybasect extension module. 2) Cursors are no longer using dynamic SQL so there will no longer be an extra result set which reported the status of the temporary stored procedure. This should remove some of the confusion behaviour of cursors. There should be fewer restrictions on the use of cursors. 3) The paramstyle is now 'named'. This means that you can now do this: c.execute("select * from titles where title like @arg", {'@arg': 'The %'}) 4) You can send arguments to Cursor.callproc() the old way: c.callproc('sp_help', ['titles']) or the new way: c.callproc('sp_help', {'@objname': 'titles'}) 5) Some internal cursor state constants were privatised (via leading '_'). Sadly no money was raised in the process and the conditions of the privatisation contract are commercial-in-confidence. 6) You can now compile the extension module without bulkcopy support by doing this: python setup.py build_ext -U WANT_BULKCOPY python setup.py install 7) The default build does not do threading any more so if you want threading enabled you will have to do this: python setup.py build_ext -D WANT_THREADS python setup.py install 8) There is some initial work to support FreeTDS. One of the problems with FreeTDS is that it does not support inline error handling. The callback error handling works well if you do not compile for threads support, but causes problems when compiled for threading. The problem occurs when the extension module releases the global interpreter lock when calling the Sybase CT library. A Python callback causes the interpreter to be reentered by the callback which leads to bad things when the following warning from the Python include file ceval.h is violated: WARNING: NEVER NEST CALLS TO Py_BEGIN_ALLOW_THREADS AND Py_END_ALLOW_THREADS!!! At the moment the module will compile for FreeTDS (at least it does on my machine) and some things do work. All you have to do is compile like this: python setup.py build_ext -D HAVE_FREETDS -U WANT_BULKCOPY python setup.py install There is no error handling and reporting for FreeTDS yet. 9) There is now some basic locale support in the sybasect extension module. I do not have a need for this so am really depending upon someone to try it and report problems: >>> from sybasect import * >>> status, ctx = cs_ctx_alloc() >>> status, loc = ctx.cs_loc_alloc() >>> loc.cs_locale(CS_GET, CS_SYB_LANG) (1, 'us_english') >>> loc.cs_dt_info(CS_GET, CS_DT_CONVFMT) (1, 3) >>> loc.cs_dt_info(CS_GET, CS_MONTH, 1) (1, 'February') >>> loc.cs_dt_info(CS_GET, CS_DATEORDER) (1, 'dmy') In theory you could do something like this: >>> import Sybase >>> from Sybase import _ctx, CS_SUCCEED, CS_SET, CS_SYB_LANG, CS_LOC_PROP >>> >>> status, locale = _ctx.cs_loc_alloc() >>> if status != CS_SUCCEED: ... raise 'cs_loc_alloc' ... >>> if locale.cs_locale(CS_SET, CS_SYB_LANG, 'french') != CS_SUCCEED: ... raise 'cs_locale CS_SYB_LANG' ... >>> db = Sybase.connect('SYBASE', 'sa', '', delay_connect = 1) >>> db.set_property(CS_LOC_PROP, locale) >>> db.connect() 10) There is some extra debugging detail for CS_DATAFMT which means you now get messages like this: >>> import Sybase >>> db = Sybase.connect('SYBASE', 'sa', '', 'pubs2') >>> db._conn.debug = 1 >>> c = db.cursor() ct_cmd_alloc(conn0, &cmd) -> CS_SUCCEED, cmd1 >>> c.callproc('sp_help', {'@objname': 'titles'}) ct_command(cmd1, CS_RPC_CMD, "sp_help", CS_NULLTERM, CS_UNUSED) -> CS_SUCCEED ct_param(cmd1, &databuf0->fmt=[name:"@objname" type:CS_CHAR_TYPE status:CS_INPUTVALUE format:CS_FMT_NULLTERM count:1 maxlength:7], databuf0->buff, 6, 0) -> CS_SUCCEED ct_send(cmd1) -> CS_SUCCEED ct_results(cmd1, &result) -> CS_SUCCEED, CS_ROW_RESULT ct_res_info(cmd1, CS_NUMDATA, &value, CS_UNUSED, NULL) -> CS_SUCCEED, 3 ct_describe(cmd1, 1, &fmt) -> CS_SUCCEED, datafmt0=[name:"Name" type:CS_CHAR_TYPE status:CS_UPDATABLE format:CS_FMT_UNUSED count:0 maxlength:30] ct_bind(cmd1, 1, &datafmt0->fmt=[name:"Name" type:CS_CHAR_TYPE status:CS_UPDATABLE format:CS_FMT_UNUSED count:1 maxlength:30], databuf1->buff, databuf1->copied, databuf1->indicator) -> CS_SUCCEED, databuf1 ct_describe(cmd1, 2, &fmt) -> CS_SUCCEED, datafmt1=[name:"Owner" type:CS_CHAR_TYPE status:48 format:CS_FMT_UNUSED count:0 maxlength:30] ct_bind(cmd1, 2, &datafmt1->fmt=[name:"Owner" type:CS_CHAR_TYPE status:48 format:CS_FMT_UNUSED count:1 maxlength:30], databuf2->buff, databuf2->copied, databuf2->indicator) -> CS_SUCCEED, databuf2 ct_describe(cmd1, 3, &fmt) -> CS_SUCCEED, datafmt2=[name:"Type" type:CS_CHAR_TYPE status:48 format:CS_FMT_UNUSED count:0 maxlength:22] ct_bind(cmd1, 3, &datafmt2->fmt=[name:"Type" type:CS_CHAR_TYPE status:48 format:CS_FMT_UNUSED count:1 maxlength:22], databuf3->buff, databuf3->copied, databuf3->indicator) -> CS_SUCCEED, databuf3 11) The was a minor change to setup.py for Linux. No longer looks for both libsybtcl and libtcl. Now just looks for libinsck. 12) The tar file now unpacks to a directory called sybase-. The module is available here: http://www.object-craft.com.au/projects/sybase/sybase-0.33.tar.gz The module home page is here: http://www.object-craft.com.au/projects/sybase/ - Dave -- http://www.object-craft.com.au From python@rcn.com Mon Mar 11 18:42:58 2002 From: python@rcn.com (Raymond Hettinger) Date: Mon, 11 Mar 2002 13:42:58 -0500 Subject: [ANN] PEP 279 version 1.6 Message-ID: PEP 279 -- Enhanced Generators has been updated: http://python.sourceforge.net/peps/pep-0279.html Comments are invited on the revised PEP. The changes were driven by comments from GvR, from the authors of PEP 255, and from members of the Py-Dev maillist. The principal changes from the previous version are: 1. Rationale section focused on generator usage instead of lazy evaluation. 2. The proposal for four builtins has been reduced to one. Xzip, xfilter, and xmap are retracted. Expanded the discussion of the remaining proposed builtin, indexed(). 3. All sections expanded to include comments received from GvR and the PEP 255 authors (the experts on the existing generator implementation). 4. Proposal for generator exception passing moved up one section. 5. Proposal for generator parameter passing listed as deferred -- everyone thinks this may be a viable idea but it doesn't have a chance in the near-term. 6. The restartability discussion has been deleted -- Guido thought it was evil. Raymond Hettinger Addenda Here are comments from Magnus Lie Hetland which were received after the PEP was updated: > I like indexed() a lot; +1. I'm quite happy to have it make PEP 281 > obsolete. Adding a separate module for iterator utilities seems like a > good idea. > > Generator comprehensions seem mildly useful, but I vote +0. Defining a > separate, named generator would probably be my preference. On the > other hand, I do see the advantage of "scaling up" from list > comprehensions. > > Even though I cannot speak for the ease of implementation, I vote +1 > for the exception passing mechanism. > > I like the generator parameter passing mechanism. Although I see no > need to defer it, deferral seems to be the most likely scenario, and > in the meantime I guess the functionality can be emulated either by > implementing the generator as a method, or by passing a parameter with > the exception passing mechanism. > > I guess there is no real need to comment on restartability, but I > can't see that I have any need for it. From python@rcn.com Mon Mar 11 20:00:44 2002 From: python@rcn.com (Raymond Hettinger) Date: Mon, 11 Mar 2002 15:00:44 -0500 Subject: [ANN] PEP 279 version 1.7 Message-ID: PEP 279 -- Enhanced Generators has been updated: http://python.sourceforge.net/peps/pep-0279.html Comments are invited on the revised PEP. The changes were driven by comments from GvR, from the authors of PEP 255, and from members of the Py-Dev maillist. There changes from version 1.6 to version 1.7 were the addition of comments from Magnus Lie Hetland and the repair a typo in the code. The principal changes from version 1.5 to version 1.6 are: 1. Rationale section focused on generator usage instead of lazy evaluation. 2. The proposal for four builtins has been reduced to one. Xzip, xfilter, and xmap are retracted. Expanded the discussion of the remaining proposed builtin, indexed(). 3. All sections expanded to include comments received from GvR and the PEP 255 authors (the experts on the existing generator implementation). 4. Proposal for generator exception passing moved up one section. 5. Proposal for generator parameter passing listed as deferred -- everyone thinks this may be a viable idea but it doesn't have a chance in the near-term. 6. The restartability discussion has been deleted -- Guido thought it was evil. Raymond Hettinger From jbauer@rubic.com Mon Mar 11 22:43:06 2002 From: jbauer@rubic.com (Jeff Bauer) Date: Mon, 11 Mar 2002 16:43:06 -0600 Subject: NormalDate 1.2 released Message-ID: NormalDate 1.2 is available from: http://starship.python.net/crew/jbauer/normaldate/ NormalDate is a specialized class to handle dates without all the excess baggage (time zones, daylight savings, leap seconds, etc.) of other date structures. The minimalist strategy greatly simplifies its implementation and use. NormalDate is a pure Python class and is therefore portable to Jython, Windows CE devices, etc. It has been in use in one form or another by many users, judging from email, since 1997. Release 1.2 includes an important bugfix for Python 2.2. Jeff Bauer Rubicon Research From jh@web.de Mon Mar 11 23:59:17 2002 From: jh@web.de (Jürgen Hermann) Date: Tue, 12 Mar 2002 00:59:17 +0100 Subject: [ANN] MoinMoin 0.11 Message-ID: A WikiWikiWeb is a collaborative hypertext environment, with an emphasis on easy access to and modification of information. MoinMoin is a Python WikiClone that allows you to easily set up your own wiki, only requiring a Web server and a Python installation (1.5.2, 1.6 or 2.0). Most important new features: file attachments, definition list markup (glossaries), change notification via email, variable substitution when saving pages, edit preview, and improved documentation. Note that the RSS features require a recent PyXML (CVS or 0.7) due to bugs in the namespace handling of xml.sax.saxutils in earlier versions. This is (hopefully) automatically detected on every installation. Statistical features are NOT designed to work with Python 1.5.2 and require Python 2.0 or higher. Overall, MoinMoin 0.11 is not explicitely tested for 1.5.2 compatibility. Homepage: http://moin.sf.net/ Download: http://sf.net/project/showfiles.php?group_id=3D8482&release_id=3D7034= 5 http://prdownloads.sourceforge.net/moin/ Mailing lists: http://lists.sf.net/lists/listinfo/moin-user http://lists.sf.net/lists/listinfo/moin-devel New features: * XML formatting now (most often) produces well-formed, and, dependin= g on proper layout of the wiki page, valid StyleBook XML * Headers are now automatically numbered, unless you set the config item 'show_section_numbers' to 0 * "#pragma section-numbers off" (or "0") switches that off explicitel= y, and "on" or "1" enables numbering * Added a "contributions" directory for 3rd party extensions * AttachFile action, contributed by Ken Sugino; note that you have to enable this action because of the possibility of DoS attacks (malicious uploads), by adding this to your moin_config: allowed_actions =3D ['AttachFile'] * "attachment:" URL scheme allows access to attachments, to get files from other pages use "attachment:WikiName/filename.ext". * New macros: Date(unixtimestamp) and DateTime(unixtimestamp) to display a timestamp according to system/user settings * Variable substitution when a page is saved, note that saving template pages does NOT expand variables. Supported are: @DATE@ Current date in the system's format @TIME@ Current date and time in the user's format @USERNAME@ Just the user's name (or his domain/IP) @USER@ Signature "-- loginname" @SIG@ Dated Signature "-- loginname date time" @MAILTO@ A fancy mailto: link with the user's data * Copied some new emoticons from PikiePikie || {{{ :-? }}} || :-? || tongue.gif || || {{{ :\ }}} || :\ || ohwell.gif || || {{{ >:> }}} || >:> || devil.gif || || {{{ %) }}} || %) || eyes.gif || || {{{ @) }}} || @) || eek.gif || || {{{ |) }}} || |) || tired.gif || || {{{ ;)) }}} || ;)) || lol.gif || * AbandonedPages macro * Added definition list markup: {{{term:: definition}}} * Added email notification features contributed by Daniel Sa=DF * SystemInfo: show "Entries in edit log" * Added "RSS" icon to RecentChanges macro and code to generate a RecentChanges RSS channel, see http://www.usemod.com/cgi-bin/mb.pl?UnifiedRecentChanges for details * Added config.sitename and config.interwikiname parameter * Better WikiFarm support: * /plugin/macro and /plugin/action can be used to store macros and actions local to a specific wiki instance * config.shared_intermap can contain a pathname to a shared "intermap.txt" file (i.e. one stored outside the datadir) * added `backtick` shortcut for {{{inline literal}}} (has to be enabled by "backtick_meta=3D1" in the config file); note that `` is then a shorter replacement for '''''' escaping * added inline search fields (at the bottom of each page) * Added preview to the editor, including spell checking * New languages: Chinese (Changzhe Han) and Portuguese (Jorge Godoy), updated French (Lucas Bruand), added Korean (Hye-Shik Chang) and Italian (Lele Gaifax) * New SystemAdmin macro * `[[Anchor(anchorname)]]` macro to insert anchors into a page, and [#anchorname Anchor Links]. * User option to open editor view via a double-click * Added commentary field to editor, recent changes and page info * Page trails (user option) * UserPreferences: checkboxes for double-click edit, page trail, fancy links, emoticons, jump to last page visited, and some other yes/no options * "config.nonexist_qm" is now the default for a user setting * `[[GetText(text)]]` macro loads I18N texts (mainly intended for use on Help pages) * table attributes via "|| ... ||", more details on http://purl.net/wiki/moin/HelpOnTables * PythonFaq interwiki tag and support for $PAGE placeholder * event logging, as the basis for future statistics * "moin-dump" command line tool to create a static copy of the wiki content * "config.external_diff" allows to set an exact path to the command, or change the name to for example "gdiff" if GNU diff is not a native command in your UNIX flavour * `[[PageSize]]` macro * the interwiki name "Self" now always points to the own wiki * config.title1 and config.title2 are inserted into the output right before and after the system title html code (title1 is right after the tag and normally undefined, title2 defaults to the "
" above the page contents) * Additional link on diff pages to ignore whitespace changes * Subpages (config.allow_subpages, config.page_icons_up) * ^superscript^ markup * `[[FootNote]]` macro * many other new config options, see HelpOnConfiguration for a complete list * [[StatsChart(type)]] shows statistical charts (currently defined types: hitcounts, pagesize, useragents) * 'inline:' scheme works like 'attachment:', but tries to inline the content of the attachment into the page; currently knows about "*.py" sources and colorizes them * support for Java applet "TWikiDrawPlugin" via drawing: URL scheme (you need to activate the AttachFile action if you want drawings) * numeric entities (&#nnnnn;) are now optionally NOT escaped, which allows you to insert more characters into a Latin-1 page, especially the Euro symbol * navi_bar is now a list of page names which should be linked on every page * test.cgi is now rolled into moin.cgi, and can be called by adding "?test" to the wiki base URL. Also, as a security feature, the server's environment is only shown for requests local to the web server. Unfinished features: * user defined forms * XML export of all data in the wiki Documentation: * extended the online help ("Help*" pages) * German help pages (thanks to Thomas Waldmann) Bugfixes: * #425857: python Parser bug on the second call * #424917: Caching control * #465499: Two HTTPS problems * #491155: FrontPage hardcoded * Handling of inbound UTF-8 encoded URIs (only with Python >=3D 2.0) * Fix for subtle changes in "re" of Python 2.2 * User-provided URLs are now never URL-escaped, which allows appendin= g #anchors and using %20 for spaces in InterWiki links From sdeibel@wingide.com Tue Mar 12 17:35:57 2002 From: sdeibel@wingide.com (Stephan R.A. Deibel) Date: Tue, 12 Mar 2002 12:35:57 -0500 (EST) Subject: Wing IDE version 1.1.3 Message-ID: Hi, Version 1.1.3 of Wing IDE Standard and Wing IDE Lite are now available. This release fixes several problems found in 1.1.2. It also adds two minor features: (1) Debugger support for hex and octal display of integers, and (2) ability to use full X font specs for editor and display font preferences (needed by some X servers for control over font encoding). To download: http://wingide.com/download Trial licenses: http://wingide.com/wingide/demo Change log: http://wingide.com/pub/wingide/1.1.3/CHANGELOG.txt Sincerely, The Wing IDE Team ------------------------------------------------------------------------ Wing IDE for Python Archaeopteryx Software, Inc www.wingide.com Take Flight! From mal@lemburg.com Wed Mar 13 13:51:22 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 13 Mar 2002 14:51:22 +0100 Subject: Reminder: PSF Contribution Documents Review Deadline References: Message-ID: As you are probably aware of, there currently is a review going on about the new way the PSF plans to manage IP contributions to the Python programming language. This is a reminder of the upcoming deadline for the review which is planned for this Friday, March 15th. If there should be significant discussions before that date, we'll extend the review period up to the previously announced termination of the mailing list on April 15th. So far the mailing list has been very very quiet, which we interpret as consent with the proposed procedures and documents. The current versions of those agreements are available online on the PSF web-site: http://www.python.org/psf/psf-contributor-agreement.html If you want to participate in the final discussion of these documents, please sign up to the mailing list at: http://mail.python.org/mailman/listinfo/psf-forms-discuss Thanks, -- Marc-Andre Lemburg PSF Board Member From wesc@deirdre.org Tue Mar 12 20:03:19 2002 From: wesc@deirdre.org (wesc@deirdre.org) Date: Tue, 12 Mar 2002 12:03:19 -0800 (PST) Subject: ANN: SV-SF Bay Area Python user grp (BayPIGgies) mtg 3/13 7:30pm Message-ID: just a quick reminder about the BayPIGgies event tomorrow evening... hope to see some of you there! also, we are placing a call-for-talks for this monthly event. if you are working on a Python project and want to get the word out, or if you are a company producing products using Python and would like to share how Python has helped you "get it done," this is a great way to let everyone know. if you are interested in giving a such talk at one of our meetings, please contact me directly. thanks! -wesley When: March 13, 2002, 7:30-9pm Where: Stanford University, Palo Alto, CA Title: BioPython Jeffrey Chang (School of Medicine, Stanford University) founded the BioPython project in 1999 to promote the development of shared software infrastructure in bioinformatics. His talk will cover the architecture and capabilities of Biopython and also give a sneak preview of the upcoming version. Click on BayPIGgies link below for more info, including driving directions, past meetings, schedule, etc. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "Core Python Programming", Prentice Hall PTR, © 2001 http://starship.python.net/crew/wesc/cpp/ Silicon Valley-San Francisco Bay Area Python Users Group (BayPIGgies) http://deirdre.org/baypiggies wesley.j.chun :: wesc at deirdre.org cyberweb.consulting : henderson, nv : cyberweb at rocketmail.com http://roadkill.com/~wesc/cyberweb/ From jmiller@stsci.edu Wed Mar 13 15:28:30 2002 From: jmiller@stsci.edu (Todd Miller) Date: Wed, 13 Mar 2002 10:28:30 -0500 Subject: ANN: numarray-0.3 Message-ID: Numarray 0.3 ------------ Numarray is an array processing package designed to efficiently manipulate large multi-dimensional arrays. Numarray is modelled after Numeric and features c-code generated from python template scripts, the capacity to operate directly on arrays in files, and improved type promotion semantics. Numarray-0.3 incorporates safety checks to prevent crashing Python when a user accidentally changes private variables in numarray. The new safety checks ensure that: 1. Numarray C-functions are called with properly sized buffers. 2. Numarray C-functions are called with properly aligned buffers. 3. Parameters match the C-function in count and i/o direction. 4. The correct generic function wrapper is used to call each C-function. 5. All indices implied by the array strides are valid. Failed checks result in python exceptions. A new memory object fixes an unforunate limitation of the python buffer object, namely the lack of guaranteed double aligned storage. The largest generated source module, _ufuncmodule.c, has been partitioned by data type into several smaller, more gcc-friendly modules, e.g. _ufuncFloat64module.c. The sort and argsort functions are fixed. The dot function is fixed for 1D arrays. Transpose, swapaxes, and reshape once again return views. WHERE ----------- Numarray-0.3 windows executable installers and source code tar ball is here: http://sourceforge.net/project/showfiles.php?group_id=1369 Numarray is hosted by Source Forge in the same project which hosts Numeric: http://sourceforge.net/projects/numpy/ The web page for Numarray information is at: http://stsdas.stsci.edu/numarray/index.html Trackers for Numarray Bugs, Feature Requests, Support, and Patches are at the Source Forge project for NumPy at: http://sourceforge.net/tracker/?group_id=1369 REQUIREMENTS -------------------------- numarray-0.3 requires Python 2.0 or greater. AUTHORS, LICENSE ------------------------------ Numarray was written by Perry Greenfield, Rick White, Todd Miller, JC Hsu, Paul Barrett, and Phil Hodge at the Space Telescope Science Institute. Numarray is made available under a BSD-style License. See LICENSE.txt in the source distribution for details. -- Todd Miller jmiller@stsci.edu STSCI / SSG (410) 338 4576 From lars.gustaebel@gmx.de Wed Mar 13 22:15:28 2002 From: lars.gustaebel@gmx.de (Lars Gustäbel) Date: Wed, 13 Mar 2002 23:15:28 +0100 Subject: tarfile 0.2.5 Message-ID: tarfile 0.2.5 tarfile is a pure python module that allows read and write access to tar and tar.gz archives. Its interface is compatible to the zipfile standard module. This will make it easy to integrate it in existing projects that already use zipfile, for example. some other features: - platform independent - handles all common file types: files, directories, symlinks and fifos - manages GNUtar extensions like longnames and longlinks - stores all meta-information about files, like permission, modification time, username, user id etc. - rather fast It is available at: http://www.gustaebel.de/lars/tarfile/ I hope, it will be useful. Suggestions, comments and patches are welcome. Lars Gustaebel (lars@gustaebel.de) From Jack.Jansen@oratrix.com Wed Mar 13 23:01:27 2002 From: Jack.Jansen@oratrix.com (Jack Jansen) Date: Thu, 14 Mar 2002 00:01:27 +0100 Subject: Next version of PEP278 - universal newline support - available Message-ID: Folks, the next version of PEP278, universal newline support, and the accompanying patch are available for your review and testing. The patch has changed very little: - open(filename, 'U') is now the way to open files for universal newline reading because 't' may have a use on Windows; - --with-universal-newlines is now the default configure option. The PEP has changed a bit more, mainly addressing issues brought up by Guido and Greg Ward. Please read, test and comment, -- - Jack Jansen http://www.cwi.nl/~jack - - If I can't dance I don't want to be part of your revolution -- Emma Goldman - From altis@semi-retired.com Thu Mar 14 17:15:29 2002 From: altis@semi-retired.com (Kevin Altis) Date: Thu, 14 Mar 2002 09:15:29 -0800 Subject: ANN: PythonCard 0.6.4 Message-ID: This release includes walkthroughs to get you started with PythonCard, an improved layout editor (resourceEditor sample), and new samples that use SOAP and XML-RPC (Blogger API). All the information you need about PythonCard can be found on the project web page at: http://pythoncard.sourceforge.net/ You can download the latest release at: http://sourceforge.net/project/showfiles.php?group_id=19015 For a list of the samples that have been built with PythonCard and some screenshots of them in action go to: http://pythoncard.sourceforge.net/samples.html A description of each sample is included in the readme.txt file in each sample directory. The kind people at SourceForge host the project: http://sourceforge.net/projects/pythoncard/ If you want to get involved the main contact point is the Mailing list: http://lists.sourceforge.net/lists/listinfo/pythoncard-users PythonCard requires Python 2.1.x or later and wxPython 2.3.2.1 or later and runs on every platform those are available for. wxPython can be downloaded at http://www.wxpython.org/ ka --- Kevin Altis altis@semi-retired.com From vinay_sajip@yahoo.co.uk Fri Mar 15 02:56:10 2002 From: vinay_sajip@yahoo.co.uk (Vinay Sajip) Date: 14 Mar 2002 18:56:10 -0800 Subject: ANN: Logging Module for Python conforming to PEP 282, first release Message-ID: I've just made available the first release of a logging module for Python. It broadly conforms to PEP 282(see http://python.sourceforge.net/peps/pep-0282.html - though that is still a work in progress). The distribution contains simple examples such as logging to console, file and streaming sockets. The simplest example might be # -- app.py --------------------- import logging logging.info("Starting...") logging.warn("Nothing to do!") logging.info("Done...") # -- end ------------------------ and logging levels DEBUG, INFO, WARN, ERROR, and FATAL are supported. Handling of exception information (tracebacks) is supported. Plus a whole lot more! Levels, Loggers, Handlers, Formatters, Filters... The documentation can be found at http://www.red-dove.com/python_logging.html Development status is pre-alpha but it has been tried out (I won't say "tested" :-)) on 1.5.2 and 2.1.1, Windows platforms. I'm dying to get feedback so please try it out! You can email me via the link on the documentation page, or give feedback via comp.lang.py if you deem it appropriate. Thanks & Regards Vinay Sajip Red Dove Consultants Ltd. From djc@object-craft.com.au Fri Mar 15 11:26:09 2002 From: djc@object-craft.com.au (Dave Cole) Date: 15 Mar 2002 22:26:09 +1100 Subject: Albatross 0.06 released In-Reply-To: Message-ID: Albatross is a small toolkit for developing highly stateful web applications. The toolkit has been designed to take a lot of the pain out of constructing intranet applications although you can also use Albatross for deploying publicly accessed web applications. In slightly more than 3000 lines of Python you get the following: - An extensible HTML templating system similar to DTML including tags for: - Conditional processing. - Macro definition and expansion. - Sequence iteration and pagination. - Tree browsing. - Lookup tables to translate Python values to arbitrary template text. - Application classes which offer the following features: - Optional server side or browser side sessions. - The ability to place Python code for each page in a dynamically loaded module, or to place all page processing code in a single mainline. - The ability to deploy applications either as CGI or via mod_python by changing less than 10 lines of code. The toolkit application functionality is defined by a collection of fine grained mixin classes. Eight different application types and four different execution contexts are prepackaged, you are able to define your own drop in replacements for any of the mixins to alter any aspect of the toolkit semantics. Application deployment is controlled by your choice of either cgi or mod_python Request class. It should be possible to develop a Request class for FastCGI or Medusa to allow applications to be deployed on those platforms with minimal changes. Albatross comes with over 130 pages of documentation. HTML, PDF and PostScript formatted documentation is available from the toolkit homepage. The toolkit homepage: http://www.object-craft.com.au/projects/albatross/ Important changes since last release: * The template parser has been enhanced to handle attribute values enclosed with either single or double quotes. The enclosing quote character can be used in the attribute string if it is escaped by a backslash ('\'). Attribute values can be broken over multiple lines. * All pickles sent to browser are now MD5 signed to detect and prevent modification. New pickle security techniques can be defined by defining a replacement for the PickleSignMixin class. * The new RandomPageModuleMixin class now allows you to build applications which use the request URL to determine which page module will be used to process the browser request. * A set of classes for implementing file based server side sessions has been added. * The simple session server can now be run as a daemon under Unix. * Program mainline for mod_python deployment has been simplified. You now hook into mod_python like this: def handler(req): return app.run(Request(req)) instead of this: from mod_python import apache : def handler(req): app.run(Request(req)) return apache.OK * New redirect() execution context method for doing browser redirection. * Session saving can be disabled via the new set_save_session() method. * The samples have been completely reorganised and documentation updated to make them less confusing. An installation program has been provided to reduce the pain of running the samples. * Many documentation improvements. - Dave -- http://www.object-craft.com.au From info@pythonware.com Fri Mar 15 13:57:33 2002 From: info@pythonware.com (PythonWare) Date: Fri, 15 Mar 2002 14:57:33 +0100 Subject: ANN: Python Imaging Library 1.1.3 (march 15, 2002) Message-ID: the secret labs proudly presents PIL 1.1.3: The Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats, and provides powerful image processing and graphics capabilities. Version 1.1.3 adds distutils build scripts, improved resampling, screen grabbing support (windows only), and more. Get your copy of the source kit here: http://www.pythonware.com/products/pil/ enjoy, the pil team "Secret Labs -- makers of fine pythonware since 1997." From flo@via.ecp.fr Sun Mar 17 21:56:09 2002 From: flo@via.ecp.fr (Florent Rougon) Date: 17 Mar 2002 22:56:09 +0100 Subject: PyXMMS and PyXMMS-remote Message-ID: Hello, WHAT? ----- PyXMMS is a set of Python bindings for all the xmms_remote* functions of the libxmms library, plus some higher-level functions. It can be used to control XMMS (a free multimedia player for X-Window) from a Python program. PyXMMS-remote is an command-line interface to PyXMMS (written in Python). It can be used to do quite a lot of things with an XMMS session from the command-line. EXAMPLES -------- 1) With PyXMMS, you can tell the XMMS session 2 to start playing with import xmms # This is PyXMMS xmms.play(2) With PyXMMS-remote, the same thing is accomplished (from your shell) with the command: pyxmms-remote -s 2 play 2) With PyXMMS, you can write the following call: xmms.enqueue_and_play_launch_if_session_not_started( ("file1.mp3", "file2.ogg", "http://u.r.l.ogg"), "xmms", 0) to: - look if the XMMS session 0 is running and launch XMMS in the background if not (by the way, the two last arguments are optional and could be ommitted here); - add the three audio streams specified to the playlist; - tell the XMMS session 0 to start playing from file1.mp3 With PyXMMS-remote, you can achieve the same thing with: pyxmms-remote E file1.mp3 file2.ogg http://u.r.l.ogg (yes, if you are masochistic, you can also use the not-so-short command name enqueue_and_play_launch_if_session_not_started; you can also specify the session to act on and the XMMS executable name) This command is handy to use with file managers and MIME-aware applications. There are currently 58 commands defined in PyXMMS-remote (as there are about the same number of functions in PyXMMS). DOCUMENTATION -------------- PyXMMS and PyXMMS-remote are well documented. You can browse these documentations on their home page (see below) or (for PyXMMS) using pydoc. LICENSE ------- PyXMMS and PyXMMS-remote are licensed under the GNU GPL. REQUIREMENTS ------------ PyXMMS and PyXMMS-remote have been tested with Python 2.1 and 2.2 and should work on earlier versions with no or very few modifications. HOME PAGE --------- You will find everything about these programs on: Have fun. -- Florent From barry@zope.com Mon Mar 18 17:26:49 2002 From: barry@zope.com (Barry A. Warsaw) Date: Mon, 18 Mar 2002 12:26:49 -0500 Subject: RELEASED email package version 1.2 Message-ID: I've released the standalone email package version 1.2. This version has much better support RFC 2047, especially when using multibyte character sets (much thanks go to Ben Gertzfield). A NEWS file excerpt is included below. I will eventually be merging this code into the Python distro, but there are a few new features I want to look at first. One of them includes RFC 2231 support (written by Oleg Broytmann). You can get the standalone email package from SourceForge: http://sourceforge.net/projects/mimelib/ Bug reports to this project please, not to the Python bug tracker (until this code is merged into the Python distro). Enjoy, -Barry -------------------- snip snip -------------------- 1.2 (18-Mar-2002) - In the MIMEText class's constructor, the _encoder argument is deprecated. You will get a DeprecationWarning if you try to use it. This is because there is a fundamental conflict between _encoder and the fact that _charset is passed to the underlying set_payload() method. _encoder really makes no sense any more. - When Message.set_type() is used to set the Content-Type: header, the MIME-Version: header is always set (overriding any existing MIME-Version: header). - More liberal acceptance of parameter formatting, e.g. this is now accepted: Content-Type: multipart/mixed; boundary = "FOO" I.e. spaces around the = sign. - Bug fix in Generator related to splitting long lines in a multiline header. - In class Charset, __str__() method added, as were __eq__() and __ne__(). - Charset.get_body_encoding() may now return a function as well as a string character set name. The function takes a single argument, which is a Message instance, and may change the Content-Transfer-Encoding: header (or do any other manipulations on the message). - Charset.from_splittable() added argument to_output which is used to specify whether the input_codec or the output_codec is used for the conversion (by default, the output codec is used). 1.1 (unreleased) - No changes since 0.97. Only the version number has changed. 0.97 (unreleased) - Message.set_charset() can now take a string naming a character set in addition to a Charset instance. In the former case, a Charset is instantiated by passing the string to its constructor. - The MIMEText constructor now passes the _charset argument to the underlying set_charset() method. This makes things consistent at the cost of a minor semantic change: the resulting instance will have a Content-Transfer-Encoding: header where previously it did not. - A fix for a crash when quopriMIME.encode() tried to encode a multiline string containing a blank line. - New module Header.py which provides a higher level interface for encoded email headers, such as Subject:, From:, and To:. This module provides an abstraction for composing such headers out of charset encoded parts, and for decoding such headers. It properly splits lines on character boundaries even for multibyte character sets. - New RFC compliant base64 and quoted-printable modules, called base64MIME.py and quopriMIME.py. These are intended to replace the Python standard base64.py and quopri.py modules, but are geared toward their use conformant to the various MIME email standards. - The Message class is much more character set aware and RFC compliant: + set_payload() now takes a new optional charset argument + New methods set_charset(), get_charset(), set_param(), del_param(), set_type() + Header parameter quoting is more RFC compliant + get_param() and get_params() now take a new optional unquote argument - The Charset module now knows about utf-8, gb2132, and big5 codecs, the latter two of which are available independently of Python (see the comments in this module for downloading Chinese, Japanese, and Korean codecs). New Charset methods get_body_encoding(), get_output_charset(), encoded_header_len(), header_encode(), and body_encode(). - The Generator now handles encoding the body, if the message object has a character set. - The Utils module has new functions fix_eols() and make_msgid(). It also includes a workaround for bugs in parseaddr() when used with Python versions before 2.2. - A fix for a Parser bug when parsing multipart/* parts that contain only a single subpart. From mwh@python.org Mon Mar 18 21:35:59 2002 From: mwh@python.org (Michael Hudson) Date: Mon, 18 Mar 2002 21:35:59 +0000 (GMT) Subject: RELEASED: Python 2.2.1c1 Message-ID: We've released a release candidate for the next bugfix release of Python, 2.2.1. Get the scoop (and the files) here: http://www.python.org/2.2.1/ In order to make 2.2.1 a solid release, please help by + Building the release, and running the test suite on your platform. + Building your extension modules and applications against this release, and running *their* test suites. + Reporting any problems to the bug tracker at sf: http://sourceforge.net/bugs/?group_id=5470 This being a bugfix release, there are no exciting new features -- we just fixed a lot of bugs. For a moderately complete list, please see: http://http://sourceforge.net/project/shownotes.php?release_id=80208 Depending on how many problems are found in this release, 2.2.1 final or a second release candidate will follow next week. Extra note for keenies: One of the bugs addressed in this release relates to the behaviour of floating point numbers with respect to under- and over-flow. This has traditionally been an obscure platform-dependent mess. To make sure that this is still the case, I would ask those of you with access to the more unusual platforms (i.e. not Linux/x86, Win32/x86) to run test_math in verbose mode and *email me* the results, including details of platform and OS tested. Thanks. Cheers, The Python development team. From Jack.Jansen@oratrix.com Tue Mar 19 13:03:22 2002 From: Jack.Jansen@oratrix.com (Jack Jansen) Date: Tue, 19 Mar 2002 14:03:22 +0100 Subject: MacPython 2.2.1c1 available Message-ID: MacPython 2.2.1c1 is available via http://www.cwi.nl/~jack/macpython.html . This is a release candidate for MacPython 2.2.1, expected later this month. Please give it a try and report your findings to pythonmac-sig@python.org. This is a patch release, so it should be 100% compatible with MacPython 2.2. This release should run on any MacOS version from 8.1 through 10.1.3 (but for 8.1 you will need to download an additional patch if you want to use the IDE). Many bugs were fixed in this release. The two that deserve special mention are that this release should finally work on a Mac OS X multiprocessor, and that the problems with short read()s from sockets have been addressed. -- - Jack Jansen http://www.cwi.nl/~jack - - If I can't dance I don't want to be part of your revolution -- Emma Goldman - From PyChecker Wed Mar 20 20:06:47 2002 From: PyChecker (Neal Norwitz) Date: Wed, 20 Mar 2002 15:06:47 -0500 Subject: ANN: PyChecker v0.8.10 released Message-ID: A new version of PyChecker is available for your hacking pleasure. PyChecker is a tool for finding bugs in Python source code. It finds problems that are typically caught by a compiler for less dynamic languages, like C and C++. It is similar to lint. Comments, criticisms, new ideas, and other feedback is welcome. NOTE: This is the last release I plan to support Python 1.5.2. Changes from 0.8.9 to 0.8.10: * Add --unpack option to warn when unpacking a non-sequence * Add --unpacklen option to warn when unpacking sequence of wrong size * Add --changetypes option to warn when setting a variable to different types * Add --stringiter option to warn when iterating over a string * Add --input option to warn when using input() * Fix crash with checking properties or deriving from objects (2.2 only) * Fix crash with nested scopes and lambdas * Fix spurious warnings for constant conditionals when using ('%s' % value) * Fix spurious warnings for unused identifiers caused by from XXX import * * Add more information when module cannot be imported * Fix spurious warnings for implicit returns when using while 1: * Fix spurious warnings for implicit returns when using try/finally: * Fix spurious warning with globals that start w/__ * Fix spurious warnings for modifying default arguments when calling {}.get(), {}.has_key(), [].index(), [].count(), etc. * Fix spurious warnings in Python 1.5.2 when using from/import PyChecker is available on Source Forge: Web page: http://pychecker.sourceforge.net/ Project page: http://sourceforge.net/projects/pychecker/ Mailling List: pychecker-list@lists.sourceforge.net Neal -- pychecker-list@lists.sourceforge.net From nvsoft@pacbell.net Wed Mar 20 04:44:37 2002 From: nvsoft@pacbell.net (Val Shkolnikov) Date: Wed, 20 Mar 2002 04:44:37 GMT Subject: Python 2.2 loadable SSL module for Windows Message-ID: Hi, The Windows distribution of Python 2.2 does not include SSL support. I developed a loadable module ssl.pyd and an enhancement to httplib.py called httpsub.py to allow use of chunked transfer encoding. Please refer to http://home.pacbell.net/nvsoft/2.2/ssl_wrapper.html -Val From akjmicro@yahoo.com Wed Mar 20 15:49:49 2002 From: akjmicro@yahoo.com (Aaron Johnson) Date: Wed, 20 Mar 2002 10:49:49 -0500 Subject: Chicago Area Python Interest group Message-ID: Hello, I'm looking to start a Python Interest group for Chicago. If anyone is interested, please reply. Perhaps with enough of us we might put an announcement on python.org Cheers, Aaron. -- From chris.arndt@web.de Thu Mar 21 00:48:25 2002 From: chris.arndt@web.de (Christopher Arndt) Date: Thu, 21 Mar 2002 01:48:25 +0100 (CET) Subject: ANN: xdialog 0.2 released Message-ID: NAME: xdialog.py - Wrapper classes for the Xdialog program SYNOPSIS: import xdialog DESCRIPTION: This module eases the use of the dialogs provided by the Xdialog program with Python. It wraps every dialog in a python class, that hides the details of calling Xdialog and getting the return status and possibly output. USAGE: import xdialog box = xdialog.YesNo("Do you really want to shoot your computer now?", title="Confirm kill") stat, out = box.show() if stat == 0: print "Bang!" elif stat == 1: print "I'll have mercy on you, for now!" else: print "Someone closed the box, you lucky bastard!" See the source and/or the docs for Xdialog for available dialogs and options. HOMEPAGE: You can get information about xdialog and my other software on: DOWNLOAD: Get your copy at: AUTHOR: Christopher Arndt NOTES: This is the initial public release. Version 0.1, which is almost the same, was never announced to the public. I fixed some bugs now and am releasing the module to get some feedback. Have fun! From vinay_sajip@yahoo.co.uk Thu Mar 21 01:53:40 2002 From: vinay_sajip@yahoo.co.uk (Vinay Sajip) Date: 20 Mar 2002 17:53:40 -0800 Subject: ANN: Logging Module v0.4 released Message-ID: A new version of the proposed Python standard logging module (as per PEP 282) has been released. You can get all the information from http://www.red-dove.com/python_logging.html There is a download link at the top of that page, and there is quite a lot of new stuff including syslog and NT event log support, support for user defined levels and more! As always, your feedback is most welcome (especially bug reports, patches and suggestions for improvement). Cheers Vinay Sajip Red Dove Consultants Ltd. Changes since the last version: ================================= Added level filtering for handlers. Return root logger if no name specified in getLogger. Added distutils setup.py script. Added formatter initialization in Handler.__init__. Tidied up docstrings. Added removeHandler to Logger. Added removeFilter to Logger and Handler. logrecv.py modified to keep connection alive until client closes it. SocketHandler modified to not reset connection after each logging event. Added shutdown function which closes open sockets, etc. Renamed DEFAULT_LOGGING_PORT->DEFAULT_TCP_LOGGING_PORT. Added DEFAULT_UDP_LOGGING_PORT. Added log_test4.py (example of arbitrary levels). Added addLevelName, changed behaviour of getLevelName. Fixed bugs in DatagramHandler. Added SMTPHandler implementation. Added log_test5.py to test SMTPHandler. Added SysLogHandler (contribution from Nicolas Untz based on Sam Rushing's syslog.py). Modified log_test1.py to add a SysLogHandler. Added rollover functionality to FileHandler. Added NTEventLogHandler (based on Win32 extensions). Added MemoryHandler implementation. Added log_test7.py to test MemoryHandler. Added log_test8.py to test FileHandler rollover. Added logException method to Logger. Added formatException method to Formatter. Added log_test6.py to test NTEventHandler and logException. Numerous internal method renamings (sorry - but better to do this now, rather than when we enter beta status). From python@rcn.com Thu Mar 21 07:07:56 2002 From: python@rcn.com (Raymond Hettinger) Date: Thu, 21 Mar 2002 02:07:56 -0500 Subject: [ANN] PEP 279 -- Updated to version 1.8 Message-ID: PEP 279 has been reposted with the following changes: -- Fixed indentation error in the logger() function. -- Changed variable names in indexed() to start and stop. -- Generator parameter passing proposal moved to a separate PEP (not yet posted) -- Added comments and voting results from the community. -- Revised the author response to comments Note, this PEP has been submitted to GvR for pronouncement. Raymond Hettinger From jbekesi@meta-ware.at Thu Mar 21 13:45:12 2002 From: jbekesi@meta-ware.at (Janos BEKESI) Date: Thu, 21 Mar 2002 14:45:12 +0100 Subject: ANN: Replacement for wave.py ( reading and setting cuepoints on win32 ) Message-ID: Hi, if anyone was ever troubled with reading or setting cuepoints of *.wav-files under win32 she should try the drop-in replacement for lib/wave.py. Usage information is provided in the doc-string. Though the module still is under construction, it works sufficiently (at least for my purposes); I decided to release it quite early because even at its present stage it could be helpful for people working on cuepoint-related projects. Improvements and testing reports are welcome, of course. Find it on http://bekesi.freezope.org/python/wave_py and have fun! -- dr. janos bekesi, vienna, austria http://www.meta-ware.at http://bekesi.freezope.org From irmen@NOSPAMREMOVETHISxs4all.nl Thu Mar 21 19:37:20 2002 From: irmen@NOSPAMREMOVETHISxs4all.nl (Irmen de Jong) Date: Thu, 21 Mar 2002 20:37:20 +0100 Subject: [ANN] Pyro 2.5 available Message-ID: You can get the latest Pyro version (2.5) at http://pyro.sourceforge.net What's new: Install script fixes New URIs to make object lookup even simpler Problems with PYRO_STORAGE fixed Checksumming of network traffic configurable Documentation updates What is Pyro? Pyro is an acronym for PYthon Remote Objects. It is a basic Distributed Object Technology system written entirely in Python. It is extremely easy to implement a distributed system with Pyro, because all network communication code is abstracted and hidden from your application. You just get a remote Python object and invoke methods on the object on the other machine. Pyro offers you a Name Server, an Event Service, mobile objects, remote exceptions, dynamic proxies, remote attribute access, automatic reconnection, a detailed manual, and many examples to get you started right away. Irmen de Jong From keyton@weissinger.org Fri Mar 22 02:21:10 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Thu, 21 Mar 2002 21:21:10 -0500 Subject: Puffin Testing Framework 0.7 Release Message-ID: The Puffin Testing Framework is a Python-based web application testing system that allows you to dynamically test even the most complex web systems as though they were black boxes. Using pure Python, I built puffin to be easily extensible and infinitely customizable. It is built from the ground up to provide for any type of customization you need to accomplish. Getting started is easy. Once downloaded and installed, you simply customize the framework to your web application, write one or more test plans (in one of two formats) and away you go. Test plans allow for repitition, dependencies, includes, etc (for a frame of reference, test plan files are similar in format to Ant build files). Though there are several other testing systems out there for web applications, puffin allows for more flexibility than most and is better documented than almost any you will find. Take a look: https://sourceforge.net/projects/puffin/ I hope it comes in useful. Please provide me any feedback you can. I'm interested in making it the best web application testing system out there and I cannot do it alone... Keyton keyton@weissinger.org From gmcm@hypernet.com Fri Mar 22 17:13:41 2002 From: gmcm@hypernet.com (Gordon McMillan) Date: Fri, 22 Mar 2002 12:13:41 -0500 Subject: ANN: Installer 5b3 (bug fix release) Message-ID: Announcing version 5b3 of Installer: http://www.mcmillan-inc.com/installer_dnld.html This is a bug fix release. Fixed: - import lock to prevent clashes between threads - reload implemented - ability to gather .pyo's - ability to set Py_OptimizeFlag - fixed a buffer overflow in a debug statement Platforms: Windows Linux Unix (relying on volunteers) Python versions: tested with Python 1.5 to 2.2 What is it: The Installer package is any easy way to deploy Python apps to systems without Python installed (or with incompatible Pythons installed). Installer support single-file and single-directory deployments. On Windows, Installer supports COM, including in-process COM servers. License: MIT style. Contact: gmcm@hypernet.com

Installer Release 5b3Easy Python app deployment. (22-Mar- 2002). -- Gordon http://www.mcmillan-inc.com/ From judoscript@hotmail.com Fri Mar 22 19:36:19 2002 From: judoscript@hotmail.com (James Huang) Date: 22 Mar 2002 11:36:19 -0800 Subject: [ANN] JudoScript, Scripting for Java Message-ID: Greetings! Introduced is JudoScript, a powerful scripting language for the Java platform: http://www.judoscript.com JudoScript is a general-purpose scripting language, built on top of Java. It allows to _use_ the riches in Java, that is, standard J2xE packages as well as open source Java software. It is designed ground-up, so there is no drag of history nor stretch for a new platform. Scripting languages are, as we all know, for doing things easily and efficiently. JudoScript brings easy-of-use to a new level. Because it is a 3GL-and-4GL (GL stands for Generation-Language). Many of the familiar languages, Python included, are 3GLs. These languages provide a relatively small set of core language constructs and syntax, plus an extension mechanism (libraries or modules or Java packages, ...), so that standard functionalities and user-defined ones are treated alike. 3GL scripting languages also embody "syntactic sugar" and that makes them much easier to do things quickly than system languages such as C/C++ and Java. 4GLs, on the other hand, are special-purpose programming languages. They contain domain-rich constructs, so you can "speak your language" while programming. Another way to put it, they allow to specify intentions, not solutions, and the language engines know how to do. The best 4GL example is SQL. JudoScript has embedded many application features right at the language level, making it a 4GL for these common application areas that are useful to many people. Its most notable features include: JDBC scripting, XML scripting and XSLT, HTML scraping, seamless Java scripting, HTTP client and server, archiving, send mail, scheduler with monitor, run executables, SSH and SCP, Windows registry, .... JudoScript is an open language (and open source, btw), that any good open source Java software and new JDK features can be easily integrated. The cool thing for Java-savvy programmers is, JudoScript tries to follow Java's models as much as possible (unless there is no Java counterpart), so that knowledge about a specific field (e.g. JDBC, ZIP, XML, ...) can be easily reused and requires minimal mind-set switch. JudoScript is an easier way to use Java features, not re-inventing everything in its own terms. Language design. JudoScript very much shares the philosophy with Python, which is good. It is not purist O.O., but rather a procedural and object-oriented hybrid language. It supports thread programming, similar but easier than Java's model. Exception handling, resume statement, function variables, ... It also has many powerful data structures. For instance, it has TableData, a two-dimensional data structure with column captions. It also has an ordered map, and supports sort by value in addition to by key. It is a programmers' language! Cross-platform-ness of Java is a double-edged sword. JudoScript's drawbacks largely stem from its other edge. Because Java is kind of common denominator of all OS's, some of the O.S.-specific features are not available in a JVM, such as some file-system features. Chmod/chown/chgrp are supported by JudoScript, but they are implemented as external executable runs. Fortunately, Java does cover most OS features, so 99% of the time you won't have problems using. Last but not least, JudoScript is open source under LGPL, so you are free and encouraged to use, bundle and embed in your Java software. Yes, it supports BSF and its own, lighter-weight interface. Hope you will have a lot of fun with JudoScript from this point on. Keep writing Python scripts; when it comes to Java, use JudoScript ;-) Cheers! -James Huang, author of JudoScript http://www.judoscript.com From barry@zope.com Fri Mar 22 19:59:15 2002 From: barry@zope.com (Barry A. Warsaw) Date: Fri, 22 Mar 2002 14:59:15 -0500 Subject: ht2html project at SourceForge Message-ID: To maintain www.python.org, we use a web page templating system called `ht2html', which transforms .ht template files into .html files. While the generated html pages are fairly stylized, there is some degree of flexibility in customizing the style for other sites. E.g. www.list.org, www.jython.org, tmda.sf.net, barry.wooz.org. There's been enough interest in the software for me to finally create a SourceForge project for it. Please visit http://ht2html.sf.net for more information. -Barry From md_lazreg@yahoo.com Fri Mar 22 20:38:04 2002 From: md_lazreg@yahoo.com (mohamed lazreg) Date: Fri, 22 Mar 2002 12:38:04 -0800 (PST) Subject: Packaging tool Message-ID: Dear Pythoneers, I have been encouraged by the responses I got about my bug tracking system question... So now I am looking for a free packaging tool writeen in python (it has to be in python)... By a packaging tool I mean a tool that goes into a development area of a software, takes the correct files and binaries depending on some user parameters then creates a package ready to release... Thank you again for all your help... Mohamed __________________________________________________ Do You Yahoo!? Yahoo! Movies - coverage of the 74th Academy Awards® http://movies.yahoo.com/ From djc@object-craft.com.au Sat Mar 23 05:18:49 2002 From: djc@object-craft.com.au (Dave Cole) Date: 23 Mar 2002 16:18:49 +1100 Subject: Python Sybase mailing list released In-Reply-To: References: Message-ID: What is it: The python-sybase mailing list is a list where users of the Sybase module for Python can discuss issues concerning the module. Since the person who wrote the Sybase module is a hopeless joke who only has access to the Linux platform and knows less than all of the module users, the list is a good place for modules users to discuss platform issues at the very least. Where is it: https://www.object-craft.com.au/cgi-bin/mailman/listinfo/python-sybase - Dave -- http://www.object-craft.com.au From djc@object-craft.com.au Sat Mar 23 06:38:27 2002 From: djc@object-craft.com.au (Dave Cole) Date: 23 Mar 2002 17:38:27 +1100 Subject: Sybase module 0.34 released In-Reply-To: References: Message-ID: What is it: The Sybase module provides a Python interface to the Sybase relational database system. It supports all of the Python Database API, version 2.0 with extensions. This is mostly a bug fix release. 1) Cursor state machine fix from Phillip J. Eby. 2) Fix for MS compiler reported by Roberto M Esguerra. 3) Added CS_IFILE option to ct_config() for Erik A. Dahl. The module is available here: http://www.object-craft.com.au/projects/sybase/sybase-0.34.tar.gz The mailing list for discussing the module is here: https://www.object-craft.com.au/cgi-bin/mailman/listinfo/python-sybase The module home page is here: http://www.object-craft.com.au/projects/sybase/ - Dave -- http://www.object-craft.com.au From keyton@weissinger.org Sun Mar 24 19:48:12 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Sun, 24 Mar 2002 14:48:12 -0500 Subject: [ANN] Puffin Testing Framework 0.8 Release In-Reply-To: Message-ID: The Puffin Testing Framework is a Python-based web application testing system that allows you to dynamically test even the most complex web systems as though they were black boxes (i.e without regard to underlying technology). In the 0.8 release, I've added the ability to repeat the execution of a test plan until some condition is met. This allows for constant monitoring of a web application's functionality or a more complex test run with every username/password combination for your web application, for example. As I approach the 1.0 release, I will be adding 'flock,' a multi-threaded controller for puffin that allows you to run multiple instances of a puffin test against your web application at one time. The hope is that I can add easy-to-customize performance testing to puffin's already powerful functional testing capabilities. So stay tuned!!! In the mean time, I've updated the user's guide which will take you step-by-step through configuring puffin for your application and writing your own test plans and extensions (including the new repeatable test plans). Take a look and send me feedback, PLEASE! BTW, I'm trying to get a bit more disciplined about the use of the bug tracker on sourceforge so please submit bugs there. If you have any specific problems with configuring puffin for your web application, please email me at the address below. I will be more than happy to assist you in return for some more field testing. As I said in my last announcement, there are several other testing systems out there for web applications, but puffin allows for more flexibility than most and is better documented than almost any you will find. Take a look: https://sourceforge.net/projects/puffin/ I hope it comes in useful. Please provide me any feedback you can. I'm interested in making it the best web application testing system out there and I cannot do it alone... Keyton keyton@weissinger.org From rjones@ekit-inc.com Mon Mar 25 06:32:55 2002 From: rjones@ekit-inc.com (Richard Jones) Date: Mon, 25 Mar 2002 17:32:55 +1100 Subject: SC-Track Roundup 0.4.1 - an issue tracking system Message-ID: ================================================= SC-Track Roundup 0.4.1 - an issue tracking system ================================================= If you are upgrading please read MIGRATION.txt. Roundup requires python 2.1.1 for correct operation. Support for dumbdbm requires python 2.1.2 or 2.2. Big stuff in this release: - Users may register alternate addresses they might send e-mail from - Splitting of file storage in the backend into multiple directories - Better handling of 8-bit e-mail messages - Nicer configuration of web headers - Popup help for multilink classes - Cleanups in the date classes - Much, much more: see the CHANGES file for details. Source and documentation is available at the website: http://roundup.sourceforge.net/ Release Info (via download page): http://sourceforge.net/projects/roundup Mailing lists - the place to ask questions: http://sourceforge.net/mail/?group_id=31577 About Roundup ============= Roundup is a simple-to-use and -install issue-tracking system with command-line, web and e-mail interfaces. It is based on the winning design from Ka-Ping Yee in the Software Carpentry "Track" design competition. Note: Ping is not responsible for this project. The contact for this project is richard@users.sourceforge.net. Roundup manages a number of issues (with flexible properties such as "description", "priority", and so on) and provides the ability to: (a) submit new issues, (b) find and edit existing issues, and (c) discuss issues with other participants. The system will facilitate communication among the participants by managing discussions and notifying interested parties when issues are edited. One of the major design goals for Roundup that it be simple to get going. Roundup is therefore usable "out of the box" with any python 2.0+ installation. It doesn't even need to be "installed" to be operational, though a disutils-based install script is provided. It comes with two issue tracker templates and three database back-ends. From andy@agmweb.ca Tue Mar 26 05:23:59 2002 From: andy@agmweb.ca (Andy McKay) Date: Mon, 25 Mar 2002 21:23:59 -0800 Subject: Vancouver Python and Zope User Group Message-ID: The next meeting is at our new regular time of 7pm on the first Tuesday of the month. Format will be very similar to the last one, informal. A quick chat and some introductions. As requested the talk will be "Top 10 of Zope: the most popular products" by Andy McKay. After that we will probably head for a beer. Date: Tuesday, April 2nd Time: 7pm Location: ActiveState, 580 Granville, Vancouver, BC (http://www.activestate.com/Contact/) See you then. -- Andy McKay From mwh@python.net Tue Mar 26 19:19:40 2002 From: mwh@python.net (Michael Hudson) Date: Tue, 26 Mar 2002 19:19:40 +0000 (GMT) Subject: RELEASED: Python 2.2.1c2 Message-ID: We've released a second release candidate for the next bugfix release of Python, 2.2.1. There haven't been many changes since 2.2.1c1, just a few fixes. Note for AIX users: there are still problems with AIX in this release, and there has not been time to repair them without fear of breaking platforms that currently work. Hopefully by the time of the release of 2.2.1 final we will be able to provide a recipe that allows AIX users to build and run Python. Get the scoop (and the files) here: http://www.python.org/2.2.1/ In order to make 2.2.1 a solid release, please help by + Building the release, and running the test suite on your platform. + Running *your* extension modules' and applications' test suites against this release. + Reporting any problems to the bug tracker at sf: http://sourceforge.net/bugs/?group_id=5470 This being a bugfix release, there are no exciting new features -- we just fixed a lot of bugs. For a moderately complete list, please see: http://sourceforge.net/project/shownotes.php?release_id=81373 Feel free to email me the output of "make test", but please check that you are not duplicating effort by reading this page first: http://starship.python.net/crew/mwh/221c2-reports.txt 2.2.1 final will follow "soon". Cheers, The Python development team. From Jack.Jansen@oratrix.com Tue Mar 26 23:33:05 2002 From: Jack.Jansen@oratrix.com (Jack Jansen) Date: Wed, 27 Mar 2002 00:33:05 +0100 Subject: MacPython 2.2.1c2 available Message-ID: MacPython 2.2.1c2 is available through http://www.cwi.nl/~jack/macpython.html . There are two relatively major changes since 2.2.1c1: - The IDE module browser should now work on OSX! This shouldn't have broken the IDE on older systems, but you are cordially invited to test this. - Most toolbox modules now weak-link against InterfaceLib, making the modules importable on older systems that miss some of the newer functionality. This should finally make 2.2.1c2 run on MacOS 8.1 and later. But: you are cordially invited to test that this indeed works (if you have 8.1 or 8.6) and doesn't break anything else (if you have OS9 or later). OSX users who previously installed 2.2.1c1 may have to remove their Python preferences file. -- - Jack Jansen http://www.cwi.nl/~jack - - If I can't dance I don't want to be part of your revolution -- Emma Goldman - From akuchlin@mems-exchange.org Thu Mar 28 03:14:01 2002 From: akuchlin@mems-exchange.org (A.M. Kuchling) Date: Wed, 27 Mar 2002 22:14:01 -0500 Subject: PEP 262: Database of Installed Python Packages Message-ID: A package database is a necessary prequisite for managing the Python packages installed on a system. PEP 262 lists the requirements for such a database and specifies a storage format for it. I'd like to get this into Python 2.3, hopefully with a still-to-be-specified package management tool. Assuming no one points out some requirement or use case missing from this draft of the PEP, my next step will be to write a proposed interface, post that draft, and then implement the PEP and integrate it with the Distutils. Comments can be posted to comp.lang.python or to the Distutils SIG. -- A.M. Kuchling http://www.amk.ca Thank you for letting me borrow your objects. -- Ute Lemper in concert, March 13, 1997 PEP: 262 Title: A Database of Installed Python Packages Version: $Revision: 1.5 $ Author: A.M. Kuchling Type: Standards Track Created: 08-Jul-2001 Status: Draft Post-History: 27-Mar-2002 Introduction This PEP describes a format for a database of Python packages installed on a system. Requirements We need a way to figure out what packages, and what versions of those packages, are installed on a system. We want to provide features similar to CPAN, APT, or RPM. Required use cases that should be supported are: * Is package X on a system? * What version of package X is installed? * Where can the new version of package X be found? (This can be defined as either "a home page where the user can go and find a download link", or "a place where a program can find the newest version?" Both should probably be supported.) * What files did package X put on my system? * What package did the file x/y/z.py come from? * Has anyone modified x/y/z.py locally? Database Location The database lives in a bunch of files under /lib/python/install/. This location will be called INSTALLDB through the remainder of this PEP. The structure of the database is deliberately kept simple; each file in this directory or its subdirectories (if any) describes a single package. The rationale for scanning subdirectories is that we can move to a directory-based indexing scheme if the package directory contains too many entries. For example, this would let us transparently switch from INSTALLDB/Numeric to INSTALLDB/N/Nu/Numeric or some similar hashing scheme. Database Contents Each file in INSTALLDB or its subdirectories describes a single package, and has the following contents: An initial line listing the sections in this file, separated by whitespace. Currently this will always be 'PKG-INFO FILES'. This is for future-proofing; if we add a new section, for example to list documentation files, then we'd add a DOCS section and list it in the contents. Sections are always separated by blank lines. PKG-INFO section An initial set of RFC-822 headers containing the package information for a file, as described in PEP 241, "Metadata for Python Software Packages". A blank line indicating the end of the PKG-INFO section. FILES section An entry for each file installed by the package. Generated files such as .pyc and .pyo files are on this list as well as the original .py files installed by a package; their checksums won't be stored or checked, though. Each file's entry is a single tab-delimited line that contains the following fields: * The file's full path, as installed on the system. * The file's size * The file's permissions. On Windows, this field will always be 'unknown' * The owner and group of the file, separated by a tab. On Windows, these fields will both be 'unknown'. * An MD5 digest of the file, encoded in hex. A package that uses the Distutils for installation should automatically update the database. Packages that roll their own installation will have to use the database's API to to manually add or update their own entry. System package managers such as RPM or pkgadd can just create the new 'package name' file in the INSTALLDB directory. Deliverables A description of the database API, to be added to this PEP. Patches to the Distutils that 1) implement an InstallationDatabase class, 2) Update the database when a new package is installed. 3) a simple package management tool, features to be added to this PEP. (Or a separate PEP?) Rejected Suggestions Instead of using one text file per package, one large text file or an anydbm file could be used. This has been rejected for a few reasons. First, performance is probably not an extremely pressing concern as the package database is only used when installing or removing packages, a relatively infrequent task. Scalability also likely isn't a problem, as people may have hundreds of Python packages installed, but thousands seems unlikely. Finally, individual text files are compatible with installers such as RPM or DPKG because a package can just drop the new database file into the database directory. If one large text file or a binary file were used, the Python database would then have to be updated by running a postinstall script. On Windows, the permissions and owner/group of a file aren't stored. Windows does in fact support ownership and access permissions, but reading and setting them requires the win32all extensions, and they aren't present in the basic Python installer for Windows. References [1] Michael Muller's patch (posted to the Distutils-SIG around 28 Dec 1999) generates a list of installed files. Acknowledgements Ideas for this PEP originally came from postings by Greg Ward, Fred L. Drake Jr., Thomas Heller, Mats Wichmann, and others. Many changes and rewrites to this document were suggested by the readers of the Distutils SIG. Copyright This document has been placed in the public domain. From akuchlin@mems-exchange.org Thu Mar 28 03:36:59 2002 From: akuchlin@mems-exchange.org (A.M. Kuchling) Date: Wed, 27 Mar 2002 22:36:59 -0500 Subject: Medusa 0.5.1 release Message-ID: I've made a tidied-up release of the Medusa toolkit for writing asynchronous servers. This release adds no new features to the last release, but discards some old unmaintained code, fixes some bugs, and moves everything into the 'medusa' package. The code is available from http://www.amk.ca/python/code/medusa.html . A full list of my changes is: Version 0.5.1: * Apply cleanup patch from Donovan Baarda * Fix bug reported by Van Gale: counter.py and auth_handler.py did long(...)[:-1] to chop off a trailing L generated in earlier versions of Python. * Fix bug in ftp_server.py that I introduced in 0.5 * Remove some duplicated producer classes * Removed work_in_progress/ directory and the 'continuation' module * Remove MIME type table code and use the stdlib's mimelib module instead Version 0.5: * Added a setup.py installation script, which will install all the code under the package name 'medusa'. * Added README.txt and CHANGES.txt. * Fixed NameError in util/convert_mime_type_table.py * Fixed TypeError in test/test_medusa.py * Fixed several problems detected by PyChecker * Changed demos to use 'from medusa import ...' * Rearranged files to reduce the number of subdirectories. * Removed or updated uses of the obsolete regsub module * Removed asyncore.py and asynchat.py; these modules were added to Python's standard library with version 1.5.2, and Medusa now assumes that they're present. * Removed many obsolete files: poll/pollmodule.c, as Python's select module now supports poll() patches/posixmodule.c, as that patch was incorporated in Python old/*, script_handler_demo/*, sendfile/* The old ANNOUNCE files * Reindented all files to use four-space indents -- A.M. Kuchling http://www.amk.ca Only the phoenix arises and does not descend. And everything changes. And nothing is truly lost. -- The true end of the series, in SANDMAN #74, "The Exile" From knight@baldmt.com Thu Mar 28 14:11:48 2002 From: knight@baldmt.com (Steven Knight) Date: Thu, 28 Mar 2002 08:11:48 -0600 (CST) Subject: SCons 0.06 is now available Message-ID: Version 0.06 of SCons has been released and is available for download from the SCons web site: http://www.scons.org/ Or through the download link at the SCons project page at SourceForge: http://sourceforge.net/projects/scons/ RPM and Debian packages and a Win32 installer are all available, in addition to the traditional .tar.gz and .zip files. WHAT'S NEW IN THIS RELEASE? IMPORTANT: This release contains the following interface changes: - FunctionAction arguments are now Nodes, not strings. This release adds the following features: - New RANLIB and RANLIBFLAGS construction variables. - A new configurable CFILESUFFIX for the Builder of .l and .y files into C files. - A CXXFile Builder that turns .ll and .yy files into .cc files (configurable via a CXXFILESUFFIX construction variable). - A new --profile=FILE option to make profiling SCons easier. - Support for Aliases (phony targets). - A new WhereIs() method for searching for path names to executables. - New PDF and PostScript document builders. - New support for compiling Fortran programs from a variety of suffixes (a la GNU Make): .f, .F, .for, .FOR, .fpp and .FPP - A new CPPFLAGS variable on all default commands that use the C preprocessor. - CPPPATH, LIBPATH and LIBS can now be specified as white-space separated lists of directories/libraries. - A new -U option. - Support env['VAR'] syntax to fetch construction variable values. The following fixes have been added: - Command generators now expand construction variables. - Use the POSIX-standard lex -t flag, not the GNU-specific -o flag. (Bug reported by Russell Christensen.) - Fixed an exception when CPPPATH or LIBPATH is a null string. (Bug reported by Richard Kiss.) - Construction variables with values of 0 were incorrectly interpolated as ''. Performance has been improved as follows: - A dictionary, not a list, is now used to track a Node's parents. The following changes have been made to the SCons packaging: - Both installation and source packages are now available as .zip files, in addition to .tar.gz files. The documentation has been improved: - The LIBS and ARGUMENTS construction variables have been documented. - The Precious() method has been documented. WHAT IS SCONS? SCons is a software construction tool (build tool, or make tool) written in Python. Its design is based on the design which won the Software Carpentry build tool competition in August 2000 (in turn derived from the Perl-based Cons build tool). Distinctive features of SCons include: - configuration files are Python scripts, allowing the full use of a real scripting language to solve build problems - a modular architecture allows the SCons Build Engine to be embedded in other Python software - a global view of all dependencies; no multiple passes to get everything built - the ability to scan files for implicit dependencies (#include files); - improved parallel build (-j) support - use of MD5 signatures to decide if a file has changed - easily extensible through user-defined Builder and Scanner objects - build actions can be Python code, as well as external commands An scons-users mailing list has been created for those interested in getting started using SCons. You can subscribe at: http://lists.sourceforge.net/lists/listinfo/scons-users Alternatively, we invite you to subscribe to the low-volume scons-announce mailing list to receive notification when new versions of SCons become available: http://lists.sourceforge.net/lists/listinfo/scons-announce ACKNOWLEDGEMENTS Special thanks to Charles Crain, Stephen Kennedy, Steve Leblanc, and Anthony Roach for their contributions to this release. On behalf of the SCons team, --SK From edcjones@erols.com Fri Mar 29 19:34:25 2002 From: edcjones@erols.com (Edward C. Jones) Date: Fri, 29 Mar 2002 14:34:25 -0500 Subject: [ANN] fetchem bibany newsgroup filter and downloader Message-ID: The second public version of Fetchem has been released. It can be found at "http://sourceforge.net/projects/fetchem/". Fetchem is a download/filter/decode program for image newsgroups written entirely in Python. It uses a variety of algorithms to filter spam out of image newsgroups. There is currently so much spam in these newsgroups that it has become very difficult to read them. Good spam filters require a fully powered programming language. Some of the spam can be removed by regex searches of the news article headers. But removing other spam, including the notorious high volume P`H.E'R-OM,O^NE spam, requires the power of a complete programming language. Since Python (http://www.python.org) is easy to read and write, it is used in Fetchem. FEATURES Some of the features of Fetchem (terrible name) are: 1. Powerful filtering capabilities that the user can reprogram. (See match.py.) 2. Prepares HTML output for your browser. "html.py" contains (yet another) HTML writing program. It uses Python's keyword arguments to pass in the attributes for each tag. For example, FONT('stuff', Color='ff0000') returns the string stuff 3. The header data is kept in a robust MySQL database. 4. Downloads images you choose. Uses uudeview to decode the images. REQUIREMENTS A Linux system with: Python 2.2 + http://www.python.org/ MySQL I used version 3.23. http://www.mysql.com MySQLdb I used MySQL-python-0.3.5. http://sourceforge.net/projects/mysql-python uudeview 0.5.17 or later. http://www.fpx.de/fp/Software/UUDeview/ getdatemodule getdatemodule-19990617-1127-jam.tgz ftp://starship.python.net/pub/crew/jam/ From Olin Shivers Fri Mar 29 20:50:27 2002 From: Olin Shivers (Olin Shivers) Date: 29 Mar 2002 20:50:27 GMT Subject: SIGPLAN Scheme Workshop Message-ID: The Scheme Workshop will be held this year in Pittsburgh, in October, the day before ICFP. I am the workshop chairman. I am taking the liberty of cross-posting the call for papers to some netnews programming-language groups with related topics. We would certainly welcome papers on relevant topics from your communities as well as attendance and participation in the workshop's discussions. -Olin Shivers =============================================================================== ACM SIGPLAN 2002 Scheme Workshop Thursday, October 3, 2002 Pittsburgh, Pennsylvania The workshop forms part of PLI 2002, which consists of the ICFP and PPDP conferences and other workshops. Full details on the workshop can be found at URL . ------------------------------------------------------------------------------- * Scope ------- The purpose of the workshop is to discuss experience with and future developments of the Scheme programming language, as well as general aspects of computer science loosely centered on the general theme of Scheme. Papers are invited concerning all aspects of the design, semantics, theory, application, implementation, and teaching of Scheme. Some example areas include (but are not limited to): - Theory Formal semantics, correctness of analyses and transformations, lambda calculus. - Design critiques Limitations of the language, future directions. - Linguistic extensions Scheme's simple syntactic framework and minimal static semantics has historically made the language an attractive "lab bench" for the development and experimentation of novel language features and mechanisms. Topics in this area include modules systems, exceptions, control mechanisms, distributed programming, concurrency and synchronisation, macro systems, and objects. - Type systems Static analyses for dynamic type systems, type systems that bridge the gap between static and dynamic types, static systems with "type dynamic" extensions, weak typing. - Implementation Compilers, optimisation, virtual machines, resource management, interpreters, foreign-function interfaces, partial evaluation, and generally implementations with novel or noteworthy features. - Program-development environments The Lisp and Scheme family of programming languages have traditionally been the source of innovative program-development environments. Authors working on these issues are encouraged to submit papers describing their technologies. - Education Scheme has achieved widespread use as a tool for teaching computer science. Papers on the theory and practice of teaching with Scheme are invited. - Applications and experience Interesting applications which illuminate aspects of Scheme; experience with Scheme in commercial or real-world contexts; use of Scheme as an extension or scripting language. - Scheme pearls Elegant, instructive examples of functional programming. A "Scheme pearl" submission is a special category, and should be a short paper presenting an algorithm, idea or programming device using Scheme in a way that is particularly elegant. ------------------------------------------------------------------------------- * Proceedings ------------- The proceedings of the conference will be published as a Georgia Tech College of Computing technical report. A special issue of the journal Higher-Order and Symbolic Computation about Scheme is planned afterwards. ------------------------------------------------------------------------------- * Important dates ----------------- - Submission deadline: 2200 UTC, 17 May, 2002 - Notification of acceptance or rejection: 28 June, 2002 - Final paper due: 31 August, 2002 - Workshop: 3 October, 2002 ------------------------------------------------------------------------------- * Submission guidelines ----------------------- Authors should submit a 100-200 word abstract and a full paper by 22:00 Universal Coordinated Time on Thursday, 17 May, 2002. (Note that 2200 UTC is 1800 EDT, or 1500 PDT.) Submissions will be carried out electronically via the Web, at . Papers must be submitted in PDF format, or as PostScript documents that are interpretable by Ghostscript, and they must be printable on US Letter sized paper. Individuals for which this requirement is a hardship should contact the program chair at least one week before the deadline. There are two classes of submissions: reular papers and short papers: - Regular papers Submissions should be no more than 12 pages (including bibliography and appendices) in standard ACM conference format: two columns, nine point font on ten point baseline, page 20pc (3.33in) wide and 54pc (9in) tall with a column gutter of 2pc (0.33in). Authors wishing to supply additional material to the reviewers beyond the 12 page limit can do so in clearly marked appendices, on the understanding that reviewers are not required to read the appendices. Submissions that do not meet these guidelines will not be considered. Suitable style files for Latex, Word, and Word Perfect can be found on the submission Web site. Submitted papers must have content that has not previously been published in other conferences or refereed venues, and simultaneous submission to other conferences or refereed venues is unacceptable. Each paper should explain its contributions in both general and technical terms, clearly identifying what has been accomplished, saying why it is significant, and comparing it with previous work. Authors should strive to make the technical content of their papers understandable to a broad audience. - Short papers Short papers need not present novel research; it is sufficient that they present material of interest or utility to the Scheme or functional-programming community. "Scheme pearls" submissions should be presented as short papers. Short papers should be formatted with the same guidelines as regular papers, but are expected to be typically around six pages in length. ------------------------------------------------------------------------------- * Organisers ------------ Workshop chair: Olin Shivers College of Computing Georgia Tech Atlanta, Ga 30332-0280 +1 404 385.00.91 shivers@cc.gatech.edu Steering committee: William D Clinger (Northeastern University) Marc Feeley (University of Montreal) Matthias Felleisen (Northeastern University) Matthew Flatt (University of Utah) Dan Friedman (Indiana University) Christian Queinnec (University Paris 6) Manuel Serrano (INRIA) Mitchell Wand (Northeastern University) Program committee: Alan Bawden (Brandeis) Olivier Danvy (University of Aarhus) Richard Kelsey (Ember, Corp.) Brad Lucier (Purdue University) Paul Steckler (Northeastern University) Andrew Wright (Aleris) Publicity: Shriram Krishnamurthi (Brown University) From fdrake@acm.org Fri Mar 29 21:24:15 2002 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 29 Mar 2002 16:24:15 -0500 Subject: "Don't Kill Opera" documentation release Message-ID: I've just made an "emergency" release of the 2.2 documentation (based on the release22-maint branch in CVS. If you use Opera 6.01, you can now feel a little safer on python.org. ;-) -Fred -- Fred L. Drake, Jr. PythonLabs at Zope Corporation From guido@python.org Sat Mar 30 05:39:10 2002 From: guido@python.org (Guido van Rossum) Date: Sat, 30 Mar 2002 00:39:10 -0500 Subject: PEP 285: Adding a bool type Message-ID: I offer the following PEP for review by the community. If it receives a favorable response, it will be implemented in Python 2.3. A long discussion has already been held in python-dev about this PEP; most things you could bring up have already been brought up there. The head of the thread there is: http://mail.python.org/pipermail/python-dev/2002-March/020750.html I believe that the review questions listed near the beginning of the PEP are the main unresolved issues from that discussion. This PEP is also on the web, of course, at: http://python.org/peps/pep-0285.html If you prefer to look at code, here's a reasonably complete implementation (in C; it may be slightly out of date relative to the current CVS): http://python.org/sf/528022 --Guido van Rossum (home page: http://www.python.org/~guido/) PEP: 285 Title: Adding a bool type Version: $Revision: 1.12 $ Last-Modified: $Date: 2002/03/30 05:37:02 $ Author: guido@python.org (Guido van Rossum) Status: Draft Type: Standards Track Created: 8-Mar-2002 Python-Version: 2.3 Post-History: 8-Mar-2002, 30-Mar-2002 Abstract This PEP proposes the introduction of a new built-in type, bool, with two constants, False and True. The bool type would be a straightforward subtype (in C) of the int type, and the values False and True would behave like 0 and 1 in most respects (for example, False==0 and True==1 would be true) except repr() and str(). All built-in operations that conceptually return a Boolean result will be changed to return False or True instead of 0 or 1; for example, comparisons, the "not" operator, and predicates like isinstance(). Review Dear reviewers: I'm particularly interested in hearing your opinion about the following three issues: 1) Should this PEP be accepted at all. 2) Should str(True) return "True" or "1": "1" might reduce backwards compatibility problems, but looks strange to me. (repr(True) would always return "True".) 3) Should the constants be called 'True' and 'False' (corresponding to None) or 'true' and 'false' (as in C++, Java and C99). Most other details of the proposal are pretty much forced by the backwards compatibility requirement; e.g. True == 1 and True+1 == 2 must hold, else reams of existing code would break. Minor additional issues: 4) Should we strive to eliminate non-Boolean operations on bools in the future, through suitable warnings, so that e.g. True+1 would eventually (e.g. in Python 3000 be illegal). Personally, I think we shouldn't; 28+isleap(y) seems totally reasonable to me. 5) Should operator.truth(x) return an int or a bool. Tim Peters believes it should return an int because it's been documented as such. I think it should return a bool; most other standard predicates (e.g. issubtype()) have also been documented as returning 0 or 1, and it's obvious that we want to change those to return a bool. Rationale Most languages eventually grow a Boolean type; even C99 (the new and improved C standard, not yet widely adopted) has one. Many programmers apparently feel the need for a Boolean type; most Python documentation contains a bit of an apology for the absence of a Boolean type. I've seen lots of modules that defined constants "False=0" and "True=1" (or similar) at the top and used those. The problem with this is that everybody does it differently. For example, should you use "FALSE", "false", "False", "F" or even "f"? And should false be the value zero or None, or perhaps a truth value of a different type that will print as "true" or "false"? Adding a standard bool type to the language resolves those issues. Some external libraries (like databases and RPC packages) need to be able to distinguish between Boolean and integral values, and while it's usually possible to craft a solution, it would be easier if the language offered a standard Boolean type. The standard bool type can also serve as a way to force a value to be interpreted as a Boolean, which can be used to normalize Boolean values. Writing bool(x) is much clearer than "not not x" and much more concise than if x: return 1 else: return 0 Here are some arguments derived from teaching Python. When showing people comparison operators etc. in the interactive shell, I think this is a bit ugly: >>> a = 13 >>> b = 12 >>> a > b 1 >>> If this was: >>> a > b True >>> it would require one millisecond less thinking each time a 0 or 1 was printed. There's also the issue (which I've seen puzzling even experienced Pythonistas who had been away from the language for a while) that if you see: >>> cmp(a, b) 1 >>> cmp(a, a) 0 >>> you might be tempted to believe that cmp() also returned a truth value. If ints are not (normally) used for Booleans results, this would stand out much more clearly as something completely different. Specification The following Python code specifies most of the properties of the new type: class bool(int): def __new__(cls, val=0): # This constructor always returns an existing instance if val: return True else: return False def __repr__(self): if self: return "True" else: return "False" __str__ = __repr__ def __and__(self, other): if isinstance(other, bool): return bool(int(self) & int(other)) else: return int.__and__(self, other) __rand__ = __and__ def __or__(self, other): if isinstance(other, bool): return bool(int(self) | int(other)) else: return int.__or__(self, other) __ror__ = __or__ def __xor__(self, other): if isinstance(other, bool): return bool(int(self) ^ int(other)) else: return int.__xor__(self, other) __rxor__ = __xor__ # Bootstrap truth values through sheer willpower False = int.__new__(bool, 0) True = int.__new__(bool, 1) The values False and True will be singletons, like None; the C implementation will not allow other instances of bool to be created. At the C level, the existing globals Py_False and Py_True will be appropriated to refer to False and True. All built-in operations that are defined to return a Boolean result will be changed to return False or True instead of 0 or 1. In particular, this affects comparisons (<, <=, ==, !=, >, >=, is, is not, in, not in), the unary operator 'not', the built-in functions callable(), hasattr(), isinstance() and issubclass(), the dict method has_key(), the string and unicode methods endswith(), isalnum(), isalpha(), isdigit(), islower(), isspace(), istitle(), isupper(), and startswith(), the unicode methods isdecimal() and isnumeric(), and the 'closed' attribute of file objects. Note that subclassing from int means that True+1 is valid and equals 2, and so on. This is important for backwards compatibility: because comparisons and so on currently return integer values, there's no way of telling what uses existing applications make of these values. Compatibility Because of backwards compatibility, the bool type lacks many properties that some would like to see. For example, arithmetic operations with one or two bool arguments is allowed, treating False as 0 and True as 1. Also, a bool may be used as a sequence index. I don't see this as a problem, and I don't want evolve the language in this direction either; I don't believe that a stricter interpretation of "Booleanness" makes the language any clearer. Another consequence of the compatibility requirement is that the expression "True and 6" has the value 6, and similarly the expression "False or None" has the value None. The "and" and "or" operators are usefully defined to return the first argument that determines the outcome, and this won't change; in particular, they don't force the outcome to be a bool. Of course, if both arguments are bools, the outcome is always a bool. It can also easily be coerced into being a bool by writing for example "bool(x and y)". Issues Because the repr() or str() of a bool value is different from an int value, some code (for example doctest-based unit tests, and possibly database code that relies on things like "%s" % truth) may fail. How much of a backwards compatibility problem this will be, I don't know. If we this turns out to be a real problem, we could changes the rules so that str() of a bool returns "0" or "1", while repr() of a bool still returns "False" or "True". Other languages (C99, C++, Java) name the constants "false" and "true", in all lowercase. In Python, I prefer to stick with the example set by the existing built-in constants, which all use CapitalizedWords: None, Ellipsis, NotImplemented (as well as all built-in exceptions). Python's built-in module uses all lowercase for functions and types only. But I'm willing to consider the lowercase alternatives if enough people think it looks better. It has been suggested that, in order to satisfy user expectations, for every x that is considered true in a Boolean context, the expression x == True should be true, and likewise if x is considered false, x == False should be true. This is of course impossible; it would mean that e.g. 6 == True and 7 == True, from which one could infer 6 == 7. Similarly, [] == False == None would be true, and one could infer [] == None, which is not the case. I'm not sure where this suggestion came from; it was made several times during the first review period. For truth testing of a value, one should use "if", e.g. "if x: print 'Yes'", not comparison to a truth value; "if x == True: print 'Yes'" is not only wrong, it is also strangely redundant. Implementation An experimental, but fairly complete implementation in C has been uploaded to the SourceForge patch manager: http://python.org/sf/528022 Copyright This document has been placed in the public domain. Local Variables: mode: indented-text indent-tabs-mode: nil fill-column: 70 End: From edcjones@erols.com Sat Mar 30 16:09:17 2002 From: edcjones@erols.com (Edward C. Jones) Date: Sat, 30 Mar 2002 11:09:17 -0500 Subject: [ANN] IM = Numeric + PIL + OpenCV Message-ID: IM (pronounced with a long I) is an Python module that makes it easy to use Numeric and PIL together in programs. Typical functions in IM are: Open: Opens an image file using PIL and converts it to Numeric, PIL, or OpenCV formats. Save: Converts an array to PIL and saves it to a file. Array_ToArrayCast: Converts images between formats and between pixel types. In addition to Numeric and PIL, IM works with the Intel OpenCV computer vision system (http://www.intel.com/research/mrl/research/opencv/). OpenCV is available for Linux at the OpenCV Yahoo Group (http://groups.yahoo.com/group/OpenCV/). IM currently runs under Linux only. It should not be too difficult to port the basic IM system to Windows or Mac. The OpenCV wrapper is large and complex and uses SWIG. It will be harder to port. The IM system appears to be pretty stable. On the other hand, the OpenCV wrapper is probably very buggy. To download the software go to http://members.tripod.com/~edcjones/pycode.html and download "PyCV.032502.tgz". Edward C. Jones edcjones@hotmail.com From samschul@pacbell.net Sun Mar 31 20:41:37 2002 From: samschul@pacbell.net (Samuel Schulenburg) Date: 31 Mar 2002 12:41:37 -0800 Subject: Python SCSI diagnostic tools using ASPI or SCSIPASSTHROUGH under Windows Message-ID: I have posted the combined ASPI and SCSIPASSTHROUGH libraries for Python at the following URL: http://starship.python.net/crew/samschul/ This release supports Python version 2.2 only. Future releases will follow the updates to the Python Library's. the main features of this open source release are: 1) Any machine the supports ASPI will execute the ASPIPy libraries. 2) All Windows machines WindowsNT -> WindowsXP that support the SCSIPASSTHROUGH interface will execute the SCSIPy libraries. 3) Both libraries are available at any time or together under python for example issueing the following Python commands will interface to either library: ISSUE COMAMND TO START SCSI >>> import scsi as Scsi scsi.py Copyright 2002 by Samuel W. Schulenburg 13555 Colony Ave. San Martin Calif. USA samschul@pacbell.net SCSI Python library loaded verson: scsi.py 0.9 03/20/03 Type help for command line help functions, or use IDLE help menu File SCSI0.log allready exists: Do you want to append or delete A/D d SCSIPython Version 0.9 03/19/2002 Windows high performance clock detected File SCSI1.log allready exists: Do you want to append or delete A/D d SCSIPython Version 0.9 03/19/2002 Windows high performance clock detected File SCSI2.log allready exists: Do you want to append or delete A/D d SCSIPython Version 0.9 03/19/2002 Windows high performance clock detected ----Device Characteristics--- Claimed = 1 DeviceID = 0 DeviceInquery = Maxtor 94098U8 FA50 DeviceName = \\.\Physicaldrive0 DriverName = atapi TID = 0 LUN = 0 MaxLBA = 80041247 SectorSize = 512 ------------------------------ ----Device Characteristics--- Claimed = 1 DeviceID = 1 DeviceInquery = Maxtor 53073U6 DAC1 DeviceName = \\.\Physicaldrive1 DriverName = atapi TID = 1 LUN = 0 MaxLBA = 60030431 SectorSize = 512 ------------------------------ ----Device Characteristics--- Claimed = 1 DeviceID = 2 DeviceInquery = SEAGATE ST118273N 6244 DeviceName = \\.\Physicaldrive2 DriverName = aic78xx TID = 0 LUN = 0 MaxLBA = 35566479 SectorSize = 512 ------------------------------ The default DeviceID will be 2 Error Loging has been enabled: CDB 12 00 00 00 FF 00 SCSIPython Version 0.9 03/19/2002 SEAGATE ST118273N 6244LP633950 NOW ISSUE COMMAND TO START ASPI >>import aspi as Aspi aspi.py Copyright 1999 by Samuel W. Schulenburg 13555 Colony Ave. San Martin Calif. USA samschul@pacbell.net ASPI Python library loaded verson: aspi.py 2.0 07/03/00 Type help for command line help functions, or use IDLE help menu Host adapter driver = ATAPI Drives are attached Host adapter # 0 SCSI ID # 7 Host adapter driver = ATAPI Drives are not attached Host adapter # 1 SCSI ID # 7 Host adapter driver = AIC78XX Drives are attached Host adapter # 2 SCSI ID # 7 Select which host adapter do you want to use, Enter host adapter number 2 0 SEAGATE ST118273N 6244LP633950 1 Drive not present 2 Drive not present 3 Drive not present 4 Drive not present 5 Drive not present 6 Drive not present 8 Drive not present 9 Drive not present 10 Drive not present 11 Drive not present 12 Drive not present 13 Drive not present 14 Drive not present File SCSI0.log allready exists: Do you want to append or delete A/D d ASPIPython Version 2.3 01/20/2002 Windows high performance clock detected CDB 12 00 00 00 FF 00 ASPIPython Version 2.3 01/20/2002 SEAGATE ST118273N 6244LP633950 >>Scsi.io6r(0x12,0x00,0,0,0xff,0) CDB 12 00 00 00 FF 00 (0, 65392, 144) >>Scsi.displaybuff(1) Read Buffer Data = for drive #02 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F -------------------------------------------------- 0000:|00 00 02 02 8B 00 00 1E 53 45 41 47 41 54 45 20 ........SEAGATE. 0010:|53 54 31 31 38 32 37 33 4E 20 20 20 20 20 20 20 ST118273N....... 0020:|36 32 34 34 4C 50 36 33 33 39 35 30 00 00 00 00 6244LP633950.... 0030:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060:|00 43 6F 70 79 72 69 67 68 74 20 28 63 29 20 31 .Copyright.(c).1 0070:|39 39 38 20 53 65 61 67 61 74 65 20 41 6C 6C 20 998.Seagate.All. 0080:|72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 20 rights.reserved. 0090:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00A0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00B0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00C0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00D0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00E0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00F0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ >>Aspi.io6(0x12,0x00,0,0,0xff,0) CDB 12 00 00 00 FF 00 (0, 0, 65536) >>Aspi.displaybuff(1) Read Buffer Data = for drive #00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F -------------------------------------------------- 0000:|00 00 02 02 8B 00 00 1E 53 45 41 47 41 54 45 20 ........SEAGATE. 0010:|53 54 31 31 38 32 37 33 4E 20 20 20 20 20 20 20 ST118273N....... 0020:|36 32 34 34 4C 50 36 33 33 39 35 30 00 00 00 00 6244LP633950.... 0030:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060:|00 43 6F 70 79 72 69 67 68 74 20 28 63 29 20 31 .Copyright.(c).1 0070:|39 39 38 20 53 65 61 67 61 74 65 20 41 6C 6C 20 998.Seagate.All. 0080:|72 69 67 68 74 73 20 72 65 73 65 72 76 65 64 20 rights.reserved. 0090:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00A0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00B0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00C0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00D0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00E0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00F0:|00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ >> Enjoy: Samuel Schulenburg From hartmut.goebel@noris.net Sun Mar 31 23:19:38 2002 From: hartmut.goebel@noris.net (Hartmut Goebel) Date: Mon, 01 Apr 2002 01:19:38 +0200 Subject: ANN: bridgekeeper 0.0.1 - a Perl to Python source code converter Message-ID: goebel consult proudly announces bridgekeeper =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 0.0.1 A Perl to Python source code converter http://www.crazy-compilers.com/ (N=FCrnberg/2002-04-01) While 2001 brought us Parott, pyperl and pyperlish, 2002 brings to you 'bridgekeeper', a Perl to Python source code converter. What 'bridgekeeper' does ------------------------ 'bridgekeeper' help converting Perl code to Python source. The quallity of the output Python source depents on the quallity of the input code. If there are constructs within the Perl code which are not possible in Python, you will get warnings. Eg. when using a name for both a hash and a scalar within the same scope (%foo, $foo). Converting Perl to Python will be a iterative process, see the TUTORIAL for more information about this. 'bridgekeeper' consists of=20 * a Perl compiler back-end emitting Python-like source and=20 * a runtime Python package which tries to emulate some perl build-in functions. The name was inspired be the bridgekeeper-scene in Monty Pythons 'Search for the Holy Grail'. Features -------- * Already converts a lot of Perl code-constructs into Python source: loops, special variables, function calls, lists, hashes, methods, etc. * Whenever there is no equivalent Python function for a Perl function, the function is emulated using the included Python library. * Includes a TUTORIAL 'How to convert Perl Code to Python Source' * Warns about variables with same name but different type within a scope, eg. when using a name for both a hash and a scalar (%foo, $foo). This included scalars, hashes, lists, arrays and (hopefully) filehandles. * Warns about mixing variables with same name but different Perl scoping within a Python scope, eg. using (global) $foo and my $foo in one scope. * Strips statements like 'my ($foo, %bar);'; this is: my and local declarations without assignment. * Special variables are renamed to their equivalent within the included Python library. * 'here-documnets' are supported. Limitations ----------- * Does not support 'use', 'BEGIN', 'END', etc. This is due how Perl handles these expressions: they get executed while parsing. See the Tutorial for solving this problem. * Does not handle 'bless', 'packages', etc. * References may or may not be resolved correctly.=20 * Does not convert things like 'my ($self, arg1, arg2) =3D @_;' into a pythonic argument-lists. (Hey, this would be a great feature!) * In some rare cases Perl functions are converted to the nearly-equivalent Python function instead of using a emulated function. This is done for functions which return a value which is probly not often used. * The Python libary included contains all required functions, while many of them are not yet implemented. * Formats are not supported anyhow. (But I already have an idea how this could be done: use a class perl.Format thatfore.) This also includes the function 'write'. * Separate prototype declarations are not supported, whereas prototypes at function definitions are taken over (as comments). * Prefix/postfix operator are not resolved. * Esoteric execution orders are not supported (see test/weird_contexts.pl). * The Python libary included is not thread-save -- and probably will never become thread-save. * A lot more :-) Availablity ----------- 'bridgekeeper' is available for download at http://www.crazy-compilers.com/