From alvaro@godsmaze.org Sun Sep 1 02:26:07 2002 From: alvaro@godsmaze.org (Alvaro Lopez Ortega) Date: Sun, 1 Sep 2002 03:26:07 +0200 Subject: PyKyra 0.1.0 the "Begin in the beginning, the King said" release Message-ID: Hi! :-) PyKyra 0.1.0, 'Begin in the beginning, the King said', has been released. It can be found at http://www.alobbs.com/pykyra * What is PyKyra? PyKyra is a fast game development framework for Python. It is base= d=20 in SDL and the Kyra engine. In addition to the standard features of Kyra, PyKyra also supports= =20 MPEG video, sound (MP3, Ogg Vorbis, Wav and Multichannel module files),=20 direct images reading and much more. * About 0.1.0 This is the first public release, currently under some development,= =20 but already fully functional. Get it, and don't forget to visit the project's homepage at=20 http://www.alobbs.com/pykyra Please report bugs and/or feature requests to alvaro@alobbs.com =2D-=20 Greetings, alo. From greg@cosc.canterbury.ac.nz Mon Sep 2 05:38:58 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Mon, 02 Sep 2002 16:38:58 +1200 Subject: ANN: Pyrex 0.4.4 Message-ID: Pyrex 0.4.4 is now available: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ New Features: * Tracebacks: Pyrex modules now produce tracebacks that show you where the error occurred in the Pyrex code. * ",".join(x) and the like now work. * Float literals don't require digits on both sides of the point. There are also some other minor improvements and bug fixes. See the CHANGES file in the distribution for a full list. What is Pyrex? -------------- Pyrex is a new language for writing Python extension modules. It lets you freely mix operations on Python and C data, with all Python reference counting and error checking handled automatically. -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand http://www.cosc.canterbury.ac.nz/~greg From remi@cherrypy.org Mon Sep 2 09:51:06 2002 From: remi@cherrypy.org (Remi Delon) Date: Mon, 2 Sep 2002 10:51:06 +0200 Subject: [ANN] CherryPy 0.6 released (SSL support) Message-ID: We're pleased to announce the release of CherryPy-0.6. This release adds SSL support to CherryPy (based on PyOpenSSL). Many thanks to Martin Sj=F6gren for his PyOpenSSL package and to Mark Wor= mgoor for his contribution to the CherryPy SSL code. ------------------------------------------ About CherryPy: CherryPy is a Python-based tool for developing dynamic websites. It uses many powerful concepts together, which makes it unique in its approach to website development. CherryPy sits between an application server and a compiler. You write source files, compile them with CherryPy and CherryPy generates an executable containing everything to run the website (including an HTTP server). Key properties/features of CherryPy are: - Based exclusively on Python (runs everywhere Python runs) - Delivers fast, robust, and scalable websites - Developers can use OOP as well as AOP (Aspect Oriented Programming) concepts to develop websites - True separation of content and presentation - Simple but powerful templating language - "HTML editor safe" templating language (templates can go back and forth between designers and developers) - Powerful standard libraries to make your life easy Other properties/features are: - Can be linked to many databases (Oracle, Sybase, MySql, PostgreSql, ...) - Can run behind another webserver (Apache, ...) - Easy clustering and load-balancing set up for high-traffic websites - Built-in caching capability - SSL support Remi. http://www.cherrypy.org From michael@krause-software.de Mon Sep 2 23:31:55 2002 From: michael@krause-software.de (Michael Krause) Date: Mon, 02 Sep 2002 22:31:55 GMT Subject: ANN: JinSitu 0.3 - Interactive introspection environment for Java and Jython Message-ID: JinSitu - Interactive introspection environment for Java and Jython. The application includes a JScrapbook for evaluating jython code and a component for exploring an object tree. As you navigate through java classes and methods the corresponding javadoc is displayed. Evaluate your jython code using three different ways: CTRL+Return : Evaluate current line (inserts newline, like Interpreter) SHIFT+Return : Evaluate current selection CTRL+SHIFT+Return : Evaluate complete buffer Press 'F5' to update the object tree display. Embed JinSitu in your application like follows (adapt to your needs): #------------------------- my_locals = { 'p': p, 'graph': graph } # doc_url = "file:///D:/Programme/jdk1.3.1_01/docs/api/" # windows path # doc_url = "file:///home/mkrause/j/jdk1.3.1_01/docs/api/" # unix path # doc_url = "http://java.sun.com/j2se/1.3/docs/api/" # http doc_url = { # multiple doc paths using class prefixes 'default' : "file:///D:/Programme/jdk1.3.1_01/docs/api/", 'javax.mail' : "file:///C:/j2sdkee1.3.1/doc/api/" } from jinsitu.JinSitu import JinSituApp js = JinSituApp(locals=my_locals, doc_url=doc_url) js.show_in_frame(size=(1260, 950), exitOnClose=1) #------------------------- This example is from the included Graph.py which is the example in Demo\awt from the jython distribution enhanced with JinSitu. NOTES - a bigger jython example instead of Graph.py is needed to demonstrate the JinSitu features. HISTORY 0.3 improved speed of tree view values of protected and private fields are displayed changes in the local namespace are immediately displayed in the tree view tree view remembers expanded nodes on refresh and update fixed evaluation of multiple dependend code lines fixed refresh of the tree view for JDK 1.4 0.2 feature multiple doc paths (Brad Clements) 0.1 initial release to the public CREDITS The icons are used with permission from Karmira's Bugseeker2. WEB SITE http://www.krause-software.de/jinsitu/ AUTHOR Michael Krause LICENSE Copyright (c) 2001 Michael Krause Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- - Michael Krause - Email michael@krause-software.de From fredrik@pythonware.com Sun Sep 1 13:42:10 2002 From: fredrik@pythonware.com (Fredrik Lundh) Date: Sun, 1 Sep 2002 14:42:10 +0200 Subject: ANN: xmlrpclib 1.0.1 Message-ID: updates: PythonWare's xmlrpclib.py module implements the XML-RPC protocol. This module has been shipped with the standard Python distribution since 2.1, and is also available as a separate distribution for use with earlier versions. The new 1.0.1 release is based on the current Python CVS version, and includes lots of minor fixes, including a number of performance enhancements. Get your copy from: http://effbot.org/downloads To learn more about the XML-RPC protocol, and implementations for other languages/platforms, see: http://www.xmlrpc.com/ Note that this is unsupported software. For commercial support, contact the Secret Labs at info@pythonware.com. enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From drifty@bigfoot.com Wed Sep 4 01:41:35 2002 From: drifty@bigfoot.com (Brett Cannon) Date: Tue, 3 Sep 2002 17:41:35 -0700 Subject: Python-dev summary for 2002-08-16 - 2002-09-01 Message-ID: This is a summary of traffic on the python-dev mailing list between August 16, 2002 and September 1, 2002 (exclusive). It is intended to inform the wider Python community of ongoing developments. To comment, just post to python-list@python.org or comp.lang.python in the usual way. Give your posting a meaningful subject line, and if it's about a PEP, include the PEP number (e.g. Subject: PEP 201 - Lockstep iteration) All python-dev members are interested in seeing ideas discussed by the community, so don't hesitate to take a stance on a PEP if you have an opinion. This is the first summary written by Brett Cannon. Summaries are archived no where at the moment. =) They will be, though, so stay tuned for the URL in future summaries. ================ Type Categories ================ This VERY long thread was sparked by Andrew Koenig asking if a discussion of making type categories more explicit had ever occured (Andrew meant for category to mean "the set of all types that implement a particular marker interface"). As Andrew later pointed out, he was asking about "a way of making notions such as 'file-like object' more formal and/or automatic". The discussion quickly started using the term interface to mean defining a way to specify that an object implemented certain methods (think of it in terms of Java's 'implements' mechanism). Once definition was out of the way, the discussion took off. Zope's implementation was pointed out ( http://cvs.zope.org/Zope3/lib/python/Interface/ ) very quickly. PEP 245 (Python Interface Syntax) was also brought to the attention of the list. The idea of using inheritance to handle interfaces was brought up. Guido said that he hasn't "given up the hope that inheritance and interfaces could use the same mechanisms. But Jim Fulton, based on years of experience in Zope, claims they really should be different" in terms of how interfaces should be handled in objects. Jeremy Hylton tried to channel Jim's opinion by pointing out that "We'd like to use interfaces to make fairly strong claims. If a class A implements an interface I, then we should be able to use an instance of A anywhere that an I is needed." But "the inheritance mechanism is too general" because if a class A implements interface I and then a class B, which does not implement I, subclasses class A we end up with a class B that claims it has a certain interface which it doesn't actually have. Guido understood the point, but still thought inheritence could be used "if there was a way to "shut off" inheritance as far as isinstance() (or issubclass())" is concerned. Guido asked the simple question, "Why do keep arguing for inheritance? (a) the need to deny inheritance from an interface, while essential, is relatively rare IMO, and in *most* cases the inheritance rules work just fine; (b) having two separate but similar mechanisms makes the language larger." Samuele Pedroni asked that any implementation "allow also for refering to anonymous super-interfaces of an interface in terms of the interface plus a subset of its signatures, also e.g. FileLike and just 'write'. [that means an interface can be thought to correspond to a set of (tag,signature) tuples, where tag identifies the interface, and one can also just consider subsets of it]". The thread has finally seemed to have stopped (for now) with Guido saying he is mulling the whole thing in the back of his head. This is a very sticky topic because of the number of design decisions required and how it might change the way people program in Python. There was also a partial sub-thread in this whole discussion about multimethods; basically a way to do overloading of methods based on parameter signature. Most of the discussion was over syntax and such and how to handle resolution order. It then seemed to go to the wayside when the main part of the thread took over again. ============================== type categories -- an example ============================== This thread was starteed when Andrew Koenig said that the reason he brought up his type category question was because he wanted a way so as to be able to identify members of a type easily. He now had an example in a program he was writing where what the type of the argument was varied and thus what needed to be done to the data changed accordingly. Jermey Hylton suggested the isinstance(obj, type(re.compile(''))) idiom. Andrew asked if this was guaranteed to work, which Jeremy said no. I asked why this was not guaranteed, and Frederick Lundh said because re.compile() is a factory fxn and it is possible that a future version could return a different object based on the pattern. =============================================== Python build trouble with the new gcc/binutils =============================================== Andrew Koenig said that he couldn't compile Python using the newest gcc (this was the day after the latest release hit servers). With help from Zack Weinberg of Code Sourcery (who also recently rewrote the tempfile module), the problem was tracked down to binutils 2.13. being the culprit and was not Python's fault. =================================== Last call: mortal interned strings =================================== The patch http://python.org/sf/576101 removes the default immortality of interned strings. I believe it was in early August (possibly spilled over from late July) when Oren Tirosh proposed the idea and wrote the above mentioned patch. There had been some discussion over whether any 3rd party code was reliant upon interned strings being immortal; none was found (MacPython was reliant upon it, but since it is under Python core control it was considered a moot point since it could be changed). It has been checked in. With the patch the way to make a string immortal is to call PyString_InternImmortal(); no code in the core uses this function. ===================================== PEP 218 (sets); moving set.py to Lib ===================================== Thanks to Greg Wilson (for writing the PEP), Alex Martelli (for writing the module initially), Guido (for refactoring Alex's code), Raymond Hettinger (for writing the docs and playing with the code himself), and Tim Peters (for some speedup code) the stdlib has now gained a sets module. It has both the notion of mutable and immutable sets (the latter used when you have a set of sets). There was discussion about how sets should print (sorted or not; unsorted was chosen) and what operators should be overloaded for working on sets (| and & were chosen). The module is a beautiful chunk of code and I highly recommend reading its source. =========================================== A few lessons from the tempfile.py rewrite =========================================== Zack Weinberg, after rewriting the tempfile module, brought up three points: 1) Lack of dummy threads, 2) lack of a pthreads_once equivalent, and 3) lack of a way to skip tests from unittest.py via some built-in method. Guido responded accordingly: 1) since some code uses the idiom of trying to import thread and catching the exception if it fails, Guido said he would be willing to accept a dummy_thread.py that would allow: try: import thread as _thread except ImportError: import dummy_thread as _thread to work. No word on whether this is being written at the moment. 2) Guido said the method was, in his opinion, overkill. He said to "be Pythonic, live dangerously, accept the risk that a ^C can screw you. It can anyway. :-)". And as for 3) Guido deferred Zack to the PyUnit list and Steve Purcell since Python just tracks Steve's code (pyunit.sf.net). Guido's suggestion was to stick code that was reliant on some other code in a separate testing suite that is only run when the reliant code is available. =========================== Standard datetime objects? =========================== Kevin Jacobs asked what stage the new datetime object was at. Guido said it is in python/nondist/sandbox/datetime/ in CVS which also has comments pointing to a wiki containing the current work on it. Fred L. Drake, Jr. is working on the C re-implementation and has now checked it into the sandbox in CVS. =================== PEP 269 versus 283 =================== Jonathan Riehl noticed that PEP 283 said PEP 269 was dead; not good considering he was close to having a patch for PEP 269 (pgen module to interface with the C version). Guido said he will revive the PEP. The patch has since been put on SF at http://python.org/sf/599331 . ============================== What is a backport candidate? ============================== Since Python 2.2 is going to be around for a long time, the question was brought up of what constitutes code that should be backported. Guido made the following three points: 1) code trivial to backport should always be backported 2) code patching 2.3 code should obviously not be backported 3) 2.2 code requires changes to use patch, but applies; gradients of this exist. So please, when submitting patches, mention whether you think the patch should be backported to the 2.2 tree and any possible dependencies it might have in a backport. ================================= python/nondist/sandbox/spambayes ================================= In response to Paul Graham's spam filter written using Baye's Rule (Slashdot post on it is at http://developers.slashdot.org/article.pl?sid=02/08/16/1428238&tid=156 ), a thread spawned around this checkin of code that followed that paper's suggestions. This thread quickly jumped into discussions on data structures, Baye's Rule, and a whole lot of talk about spam. Very interesting if spam filtering interests you. Tim Peters has been leading the drive on this chunk of code (and thanks to his illness that befelled him in late August which he has subsequently gotten over he had a few days of major hacking on it; Tim showed he is a performance stats whore ). A very cool quote came out of this thread from Eric S. Raymond when discussing the spam filter he has been working on: "This is actually the first new program I've coded in C (rather than Python) in a good four years or so". ==================== Parsing vs. lexing. ==================== In response to a question by Aahz about what the differences were between a lexer, parser, and tokenizer, Eric Raymond posted a good overview of the differences. Guido later commented in an email mentioning SPARK and about how Python's lexer (pgen) works and why he wrote it. He also made some other comments on lexers. Jeremy Hylton pointed out a "neat new paper about an old algorithm for recursive descent parsers with backtracking and unlimited lookahead" by Bryan Ford at http://www.brynosaurus.com/pub.html . Alex Martelli pointed out that this discussion reminded him of "a long-ago interview with Borland's techies" in which they said they were able to make Borland PASCAL fit on a floppy while MS PASCAL took multiple floppies. Their trick was "we just did everything by the Dragon Book -- except that the parser is a hand-written recursive descent parser [Aho &c being adamant defenders of Yacc & the like], which buys us a lot". Someone named Noah also emailed a discussion on lexers and parsers pulling in Finite State Machines, Push Down Autonoma, and Turing Machines in his discussion. Martin Sj?n says that Haskell's pattern matching and lazy evaluation makes lexers easy (even a Recursive-Descent parser), but unfortunately Haskell does not play with other languages nicely. Haskell is where Python got it's list comprehension idea. ========================================= [Python-Dev] Fw: Security hole in rexec? ========================================= It was brought to the attention of the list that deleting __builtins__ allowed a compromise in rexec. Guido pointed out that http://python.org/sf/577530 reports this. He also said don't trust rexec. A patch was submitted and checked in to document the view that rexec is really not that safe. ================= A `cogen' module ================= Francois Pinard asked about Cartesian products using the new sets module. Guido didn't think people would in general need it. Francois quickly started this thread of discussing a cogen module to generate Cartesian products and other ways of operating on sets. The thread quickly died when Tim Peters posted "his elaborate state-of-the-art code", as Guido called it. But Francois said he would be back for more discussion on this. ================= Mersenne Twister ================= Raymond Hettinger volunteered to implement the Merseene Twister algorithm (one in Python exists at http://www.math.keio.ac.jp/~matumoto/emt.html). While discussing to implement in C or Python, Guido noticed that random.Random re-implements whrandom. Guido then came up with the idea of writing a base random class that is subclassed where .random() can be implemented; Tim Peters agreed and suggested more methods to subclass. ================================= New PEP Format: reStructuredText ================================= David Goodger and Barry Warsaw have now gotten reST as a usable syntax for PEPs. Read the PEPs on the subject to learn more: - PEP 12 -- Sample reStructuredText PEP Template (http://www.python.org/peps/pep-0012.html) - PEP 258 -- Docutils Design Specification (http://www.python.org/peps/pep-0258.html) - PEP 287 -- reStructuredText Docstring Format (http://www.python.org/peps/pep-0287.html) It has been suggested that the summaries try using reST; I am considering it. ==================================== tiny optimization in ceval mainloop ==================================== Jeremy Hylton noticed that in ceval that their is a test of whether the ticker was 0 or if things_to_do was set to true (explanation of the ticker, checkinterval, and the GIL follow this paragraph). Jeremy wondered if we could just drop the ticker to 0 when things_to_do is true. Jack Jansen, though, pointed out that clearing it is not guaranteed since there may be an interrupt routine when "we fiddle things_to_do". Skip Montanaro then pointed out that since neither ticker nor things_to_do is fiddled with unless the GIL is held that instead of causing each thread to execute this test that they could be made globals instead; he did a patch that implements this ( http://python.org/sf/602191 ). Guido then said that if there wasn't a decent speed improvement, then no patch would be checked in. He then changed his mind when it was pointed out that it actually simplified the code. Skip tested anyway, though, and there is a speed improvement. This also brought up whether the default value of 10 for checkinterval was reasonable. It was then agreed to be bumped up to 100. Jack ran some code and said he noticed a definite improvement. Python's version of threading is not like in C. There is something called the GIL (Global Interpreter Lock) which any thread wishing to execute Python code or play with Python objects must hold. This means that when you have Python threads running (using the thread or threading module) they are usually all waiting in line to get the GIL. Now for Python to decide when to release the GIL for another thread to grab it, it uses the ticker. This variable counts down to zero by being decremented every time a Python opcode is executed (originally defaulted to 10, now defaulted to 100). The ticker's starting value after each release of the GIL is what sys.checkinterval() sets. To get a better understanding of threading under Python I recommend reading Aahz's tutorials on threading. From greg@cosc.canterbury.ac.nz Wed Sep 4 02:59:11 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Wed, 04 Sep 2002 13:59:11 +1200 Subject: ANN: Pyrex 0.4.4.1 Message-ID: It has been brought to my attention (several times!) that Plex was missing from the 0.4.4 release. This one fixes that. What is Pyrex? -------------- Pyrex is a new language for writing Python extension modules. It lets you freely mix operations on Python and C data, with all Python reference counting and error checking handled automatically. -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand http://www.cosc.canterbury.ac.nz/~greg From pete@shinners.org Wed Sep 4 16:27:55 2002 From: pete@shinners.org (Pete Shinners) Date: Wed, 04 Sep 2002 15:27:55 GMT Subject: Pygame 1.5.3 Message-ID: Another patch release of pygame is now available. This mainly fixes false exceptions that were being raised when dealing with rectangles. This effected recent game releases like Civil-0.8. The release also contains minor enhancements to the CD-ROM and MPEG objects. Everything is found at the pygame website, http://www.pygame.org From inigoserna@terra.es Wed Sep 4 18:48:14 2002 From: inigoserna@terra.es (=?ISO-8859-1?Q?I=F1igo?= Serna) Date: 04 Sep 2002 19:48:14 +0200 Subject: ANN: lfm 0.9 Message-ID: --=-SKXYRyUJAa1cZTOy7KXr Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hello,=20 After 6 months since last release, I bring you a new version (0.9) of lfm. Read more and download it in next link: http://www.terra.es/personal7/inigoserna/lfm 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.8:=20 Version 0.9 ("...and the day arrived") - 2002/09/05: + ZIP files can be un/compressed now. ZIP vfs works too + added 'rebuild vfs' and 'rebuild_vfs' question / option. Configurable. There is no need to wait until vfs file is rebuilt + Applied some good patches from Bartosz Oler: 1. colors customization: Now you can customize the colors lfm use in the configuration file, 'colors' section. Each color is defined by a string with its name. It looks like this: element foreground_color background_color 2. Allow preferences values to contain colons in the configuration file= . 3. Lack of a bookmark's definition shouldn't be an error. + pyview: new features: - read from stdin - go to / set bookmarks - open shell + pyview doesn't show blank screen a the end of the file, now it shows la= st line + lfm works now with "from __future__ import division", prepared for Pyth= on 3.0 + set python2 as default interpreter for setup.py, lfm, lfm.py, pyview an= d pyview.py + my email address has changed + Bugs fixes. See ChangeLog for complete list - lfm: * create temporary files with mask 0066 and directories with perm= s 0700, so only owner can read/write them * avoid zombie processes when using 'fork' (now fork twice or thr= eads) * show correct filename when an error occurs while uncompressing = file * don't compress '..' directory * when lfm exits after checking command line options, make 'lfm' = shell script don't show path error * when un/compressing files cursorbar must remain in the same fil= e * when, at start, lfm can't enter into a dir due to directory per= missions * crash if len(line) =3D=3D width of cursorbar window * don't append '*' to historic in entries * fix cursor bar position after sorting - pyview: * when user hasn't permissions to read file, exit gracefully inst= ead of crashing * last char in file is not showed As always, comments and suggestions are welcome.=20 Best regards, I=F1igo Serna --=-SKXYRyUJAa1cZTOy7KXr Content-Type: application/pgp-signature; name=signature.asc Content-Description: Esta parte del mensaje esta firmada digitalmente -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9dkdefN63/+cBjZoRAjPoAKCRb5vNkxzNYJhurclyDDcFu9sPIwCfR7K3 HJ4CRWm/hwbGYUyzwMn8h1E= =re0n -----END PGP SIGNATURE----- --=-SKXYRyUJAa1cZTOy7KXr-- From rjones@ekit-inc.com Wed Sep 4 22:50:34 2002 From: rjones@ekit-inc.com (Richard Jones) Date: Thu, 5 Sep 2002 07:50:34 +1000 Subject: SC-Track Roundup 0.4.4 - an issue tracking system Message-ID: ================================================= SC-Track Roundup 0.4.4 - an issue tracking system ================================================= Note: If you have an existing roundup installation, make a backup of your database. Make sure you read doc/upgrading.txt! This is probably the last 0.4 maintenance release, since I hope to release the first 0.5 beta next week :) Roundup requires python 2.1.1 for correct operation. Support for dumbdbm requires python 2.1.2 or 2.2. 2.1.3 and 2.2.1 are recommended. This is a bugfix release, fixing: . bug in database opening . sf bug #596155: bug with multilink . sf bug #600699: documentation in doc/getting_started.txt . sf bug #600700: doc/upgrading.txt: no info about 0.4.3 . sf bug #603696: Mail followup not inserted . sf bug #603703: way to unassign issues 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 wesc@deirdre.org Thu Sep 5 07:25:35 2002 From: wesc@deirdre.org (wesc@deirdre.org) Date: Wed, 4 Sep 2002 23:25:35 -0700 (PDT) Subject: ANN: BayPIGgies mtg Wed 9/11 7:30pm Message-ID: BayPIGgies: Silicon Valley-San Francisco Bay Area Python Users Group Agenda: Using a New MVC Architecture to Create a Pythonic XML-based Web Application Framework When: September 11, 2002 @ 7:30pm Where: Stanford University, Palo Alto, CA Speakers: Paul McGavin, Donovan Preston, Sam Penrose from InterSight We will discuss how we are applying a new Python-based MVC architecture to create an efficient, Pythonic web application framework that separates presentation templates from the Python source code with DOMTemplate. The framework componentizes behavior into reusable objects with DOMWidgets and DOMHandlers. After creating web applications in three separate Python frameworks -- Webware for Python, Zope and Apache/Python cgi -- InterSight decided to create its own MVC framework, based on some of the ideas from IBM and Lutris Enhydra's Barracuda project, to power their automated publishing applications. Their applications enable scalable content: the ability to produce, from a single set of managed data and images, many different marketing communication pieces: press- ready Adobe InDesign and QuarkXPress files, web pages, order sheets, sample stickers, price tags and more. We are actively seeking speakers for BayPIGgies, esp. October 9th! If you would like to give a talk at one of our meetings (any Python- related topic), please contact us! more info including directions: http://www.baypiggies.net hope to see some of you on Wednesday! -wesley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "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://www.baypiggies.net wesley.j.chun :: wesc at deirdre.org cyberweb.consulting : henderson, nv : cyberweb at rocketmail.com http://roadkill.com/~wesc/cyberweb/ From nas@mems-exchange.org Thu Sep 5 17:17:32 2002 From: nas@mems-exchange.org (Neil Schemenauer) Date: Thu, 5 Sep 2002 12:17:32 -0400 Subject: ANNOUNCE: scgi 0.5 released Message-ID: Version 0.5 of the scgi package is now available from: http://www.mems-exchange.org/software/scgi/ The SCGI protocol is a replacement for the Common Gateway Interface (CGI) protocol. It is a standard for applications to interface with HTTP servers. It is similar to FastCGI but is designed to be easier to implement. Included in this package is mod_scgi, an Apache module that implements the client side of the protocol. There is also a a Python package called scgi which implements the server side of the protocol. Changes in version 0.5 ---------------------- scgi_server.py * Rewrite most of the scgi_server parent code. Drop the table of busy children and the shared pipe between the parent and children. Instead, the children write a byte on the Unix domain pipe when they are ready for a request. In the process, fix a bug that caused the parent to wait until all the children were ready before delegating a request (found by Changjune Kim). mod_scgi.c * Pass REMOTE_USER to SCGI servers (patch from Hamish Lawson). -- Neil Schemenauer | MEMS Exchange Software Engineer | http://www.mems-exchange.org/ From barry@zope.com Thu Sep 5 19:06:59 2002 From: barry@zope.com (Barry A. Warsaw) Date: Thu, 5 Sep 2002 14:06:59 -0400 Subject: New `spambayes' project on SourceForge Message-ID: There's been a ton of press about applying Bayesian classifiers to spam detection lately, spurred on by Paul Graham's recent paper "A Plan for Spam" http://www.paulgraham.com/spam.html Tim Peters has done an incredible amount of work on our Python implementation of this idea. Some of the reasons why I think Tim's work is so cool is that he's brought along his deep knowledge of speech recognition's related issues, and his obsessive devotion to reducing the amount of spam I ultimately have to delete . In order to encourage more participation from the wider open source community, we've moved the code from a backwater of the Python cvs tree to its own project on SourceForge. The hope is that more people will be able to contribute to ideas, testing, and integration of the basic algorithms with other systems such as mail daemons, mailing list managers, and mail clients. The project is called "spambayes" (for lack of creativity on our part :) and is hosted here: http://sf.net/projects/spambayes If you're interested in becoming a developer on the project, let me know. Otherwise you can of course get anonymous checkouts of the code. There are also two mailing lists related to the spambayes project. The first is a general discussion list: http://mail.python.org/mailman-21/listinfo/spambayes and the other is a list for cvs checkin message notices: http://mail.python.org/mailman-21/listinfo/spambayes-checkins Feel free to join those lists (and help be a guinea pig for Mailman 2.1 :). Enjoy, -Barry PS to Python-devers: the code has been removed from nondist/sandbox/spambayes, so you won't be able to hack on it there. Also, please move discussion about this from python-dev@python.org to spambayes@python.org From iporres@abo.fi Fri Sep 6 14:05:32 2002 From: iporres@abo.fi (Ivan Porres) Date: Fri, 6 Sep 2002 16:05:32 +0300 Subject: ANN: System Modeling Workbench Message-ID: The System Modeling Workbench is a collection of tools for editing, storing, analyzing and verifying models. It is based on the OMG MOF and UML standards and it is implemented using the Python programming language. It is still under development, but we think it already contains many interesting ideas. It is distributed under the GNU General Public License and is available from http://www.abo.fi/~iporres/Projects/fog0000000023.html. SMW is built from the following components: - SMW Kernel. It implements a MOF-based metamodel as a collection of Python classes. It supports OCL-like queries, bidirectional associations, well-formed rules and XMI input and output. - Repository. A central repository and version control system for MOF and XMI-based models. - Transformation Framework. A collection of classes for transforming models into other artifacts: code, metrics, test cases, etc... It can also be used to refactor models. - Modeler. A graphical editor. It is still under construction but it already has some cool features. It supports the following profiles: * Plain UML 1.4 as defined in the OMG Standard. (www.omg.org/uml) * Stepwise Feature Introduction for Python Profile. A profile for creating Python programs based on UML 1.4 and the Stepwise Feature Introduction method. * SA/RT. A profile for creating Real-Time Structured Analysis models. The main contact person for the SMW Application is Ivan Porres. Send e-mail to iporres@abo.fi or see http://www.abo.fi/~iporres/Projects/fog0000000023.html Ivan From mike@mikesclutter.com Fri Sep 6 17:42:09 2002 From: mike@mikesclutter.com (Michael Owens) Date: Fri, 6 Sep 2002 11:42:09 -0500 Subject: ANN: PySQLite 0.3.0 Released Message-ID: NAME: pysqlite - Extension module for SQLite databases. DESCRIPTION: A Python-DB API 2.0 compliant extension module that connects to SQLite databases. SQLite is a powerful, embedded relational database in a compact C library. It supports a large subset of SQL92, multiple tables and indices, transactions, and triggers. It has a simple C/C++ interface requiring only three functions to perform queries. It has ODBC, JDBC, Perl-DBI, PHP, Tcl, Delphi, Ruby, DBExpress, wxWindows, Eiffel, and Lua bindings. Its source code is uncopyrighted and can be used for any purpose. More information can be found at . USAGE: import sqlite conn = sqlite.connect("db") cursor = conn.cursor() SQL = """ select category, family, genus, species from calflora order by genus, species limit 10""" cursor.execute(SQL) for col in cursor.description: print "\t %12s - %3s bytes" % (col[0], repr(col[3])) row = cursor.fetchone() while row != None: print "%14s, %15s, %19s, %8s, %25s" % tuple(row) row = cursor.fetchone() SQL = "insert into calflora (family,genus,species) values(%s,%s,%s)" cursor.execute(SQL, ('greenus', 'weedus', 'maximus')) conn.close() HOMEPAGE: DOWNLOAD: Linux(source) and Windows (binary) downloads are available at AUTHORS: Gerhard Häring Michael Owens William Trenker LICENSE: Python NOTES: PySQLite has been tested on FreeBSD, Linux, and Windows with both Python 2.1 and 2.2. The latest versions of SQLite (v. 2.6 and greater) are recommended. Version 0.3.0 fixed a lot of bugs, while also adding new features. Users of PySQLite are recommended to upgrade. The following are some of the changes and enhancements since the last release: - Squashed a few memory leaks. - Exposed the sqlite_exec, sqlite_last_insert_rowid and sqlite_changes functions of SQLite to Python as methods of the connection object. - Add support for Date types, if mxDateTime is available. - Support for optional DB-API extensions from PEP 0249 - Added files for creating a PySQLite Debian package. - setup.py: - Added Cygwin as platform that's supported by default - Added third example: program to dump a table in XML format. - Use bool type and custom bool converter for boolean fields. - Set cursor.rowcount appropriately after DML (insert/update/delete) statements. - Fixed a bug with the SQL-quoting of longs. - Inline documentation improvement. - Change invocation of ReferenceError to work with Python 2.1 - (really) implemented weak references from cursors to connections - Added new test suite. - Adapted test for threadsafety attribute. - Added checks with user-defined float and string functions. - Removed Connection.begin(). Transactions are now started implicitely. - Use DB-API quoting instead of manual Python quoting. - Use string methods instead of the string module. - Added checks for functions/aggreagates that raise exceptions or return None (NULL). - Added tests for proper commit/rollback behaviour. Added tests for autocommit feature. - Implemented autocommit feature. Renamed the parameter of Connection.__init__ from "filename" to "db". Commit and rollback now check if the connection is open at all. Started adapting the weak reference code from pyPgSQL to loosely couple cursors and connections. This is needed when you want to check if there are any open cursors for a given connection, for example. - Simplified version numbers, removed the check for equal version numbers in _sqlite and sqlite. This looked like overhead to me. The version number scheme is now only: major.minor.micro Set threadsafety to level 1. I believe we can guarantee than sharing the module among threads will do no harm. Sharing the connection would. From alberanid@libero.it Sat Sep 7 16:11:24 2002 From: alberanid@libero.it (Davide Alberani) Date: Sat, 07 Sep 2002 15:11:24 GMT Subject: DAXFi 0.9 Message-ID: DAXFi 0.9 is available here: http://daxfi.sourceforge.net/ DAXFi is a Python package that helps configure several different kinds of firewalls in a consistent way. The rules can be described with XML files, XML strings, or generated directly by the code. It comes with a Python package, useful to build other applications aimed to manipulate different firewalls in a homogeneous way and includes some useful example programs. DAXFi is release under the GPL license. In this release: the XML syntax was modified, many bugs were fixed, and the C modules were compiled for the i386, Alpha, PPC, and Sparc64 architectures. Other changes were introduced to improve performance. -- Davide Alberani email: Personal home page: http://digilander.iol.it/alberanid/

DAXFi 0.9 - configure several different kinds of firewalls in a consistent way. (07-Sep-02) From keyton@weissinger.org Sun Sep 8 15:30:31 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Sun, 8 Sep 2002 10:30:31 -0400 Subject: [ANN] New Homepage for the Puffin Automation Framework! In-Reply-To: Message-ID: The new home page for the Puffin Automation Framework is live! Check it out: http://www.puffinhome.org New documentation. New navigational structure. What are you waiting for, start automating with Puffin today! What is the Puffin Automation Framework? As it's name implies, Puffin allows you to automate "actions." An action, in terms of Puffin, is any "high level" execution item that may require inputs, may produce outputs, and whose results may be validated for success or failure. For example, an action may involve making an HTTP request to a dynamic web page. It may involve grabbing a file's contents or even retrieving a specific email based on a keyword in the subject line. All of these are actions in the sense that they can be automated by Puffin. Puffin will manage all inputs, outputs, and validation for these actions. Many technologies will allow you to do that. So why use Puffin? The real differentiators for Puffin are the following: 1) No programming is required! If there is an action type for your desired task already in the framework (and more are being added all the time), then all you need is XML to configure your action. 2) You can create a transactional grouping of actions that succeed only if every action in the group succeed. 3) You can automate tasks in a connected fashion (use the outputs of action #1 as the inputs of actions #2 and #3). 4) You can automate intelligent repetition of task execution (execute this action until X happens). 5) You can add dependencies to your action execution (execute this action only if this other action's execution is successful). 6) Though programming is not required, you CAN extend any part of the Puffin Automation Framework in your own Python programs. The keyword is "framework." You can build applications that leverage Puffin and all it provides. 7) You get failed task alerting (via email, file logs, etc) and reporting as part of the framework. 8) Workspaces allow you to separate your problem space (places where you would want to automate actions) into discrete chunks with separate configurations and action definitions. Keyton Weissinger keyton@puffinhome.org From gerhard.haering@gmx.de Sun Sep 8 18:29:43 2002 From: gerhard.haering@gmx.de (Gerhard =?iso-8859-1?Q?H=E4ring?=) Date: Sun, 8 Sep 2002 19:29:43 +0200 Subject: [ANN] pyPgSQL 2.2 released Message-ID: Announce: pyPgSQL - Version 2.2 is released. =========================================================================== pyPgSQL v2.2 has been released. It is a bug fix release to version 2.1. It is available at http://pypgsql.sourceforge.net. pyPgSQL is a package of two (2) modules that provide a Python DB-API 2.0 compliant interface to PostgreSQL databases. The first module, libpq, exports the PostgreSQL C API to Python. This module is written in C and can be compiled into Python or can be dynamically loaded on demand. The second module, PgSQL, provides the DB-API 2.0 compliant interface and support for various PostgreSQL data types, such as INT8, NUMERIC, MONEY, BOOL, ARRAYS, etc. This module is written in Python and works with PostgreSQL 7.0 or later and Python 2.0 or later. Note: It is highly recommended that you use PostgreSQL 7.1 or later and Python 2.1 or later. PostgreSQL is a sophisticated Object-Relational DBMS, supporting almost all SQL constructs, including sub-selects, transactions, and user-defined types and functions. It is the most advanced open-source database available any- where More information about PostgreSQL can be found at the PostgreSQL home page at http://www.postgresql.org. Python is an interpreted, interactive, object-oriented programming lang- uage. It combines remarkable power with very clear syntax. It has mod- ules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New builtin modules are easily written in C or C++. Python is also usable as an exten- sion language for applications that need a programmable interface. Python is copyrighted but freely usable and distributable, even for commercial use. More information about Python can be found on the Python home page at http://www.python.org. --------------------------------------------------------------------------- ChangeLog: =========================================================================== Changes since pyPgSQL Version 2.1 ================================= The following source code files were added to Version 2.2 of pyPgSQL: pyPgSQL.spec - RPM spec file, contributed by Sean Reifschneider. Changes to README ----------------- * Added note about case-insensitiveness of column access in PgResultSet. Changes to PgSQL.py ------------------- * Fixed various problems with the PgResultSet: Column (attribute and dictionary) access is now case-insensitive. A __contains__ method was added and the __setattr__ method was fixed. The get method got an optional default value parameter. * Fixed various problems with the PgNumeric type: - Added code to allow a float as an argument to the PgNumeric constructor. - You can now change the precision/scale of a PgNumeric by: a = PgNumeric(pgnumeric, new prec, new scale). This can be used to 'cast' a PgNumeric to the proper precision and scale before storing it in a field. - The arithmatic routines (__add__, __radd__, etc) now ensure that the arguments are properly coerced to the correct types. - Added support for the augmented arithmetic operations (__iadd__, etc). - The math routines would lose precision because the precision/ scale were set to be the same as the first operand. This is no longer the case all precision is retained for the +, -, and * operations. * Fixed problem that occurs when a query on an OID field doesn't return any rows. [Bug #589370]. * Applied patch #569203 and also added __pos__ and __abs__ special methods to PgNumeric. * Ensure proper SQL-quoting of long ints. Changes to PgSQLTestcases.py ---------------------------- * 14 new tests, mostly for PgNumeric and PgResultSet. From rpm@wag.caltech.edu Mon Sep 9 20:51:40 2002 From: rpm@wag.caltech.edu (Rick Muller) Date: Mon, 09 Sep 2002 12:51:40 -0700 Subject: [ANN] PyQuante 1.0.3 is available Message-ID: PyQuante is a suite of programs for writing quantum chemistry software. The program is written in the Python programming language, but has many "rate-determining" modules also written in C for speed. The resulting code is not nearly as fast as Jaguar, Gaussian, or GAMESS, but the resulting code is much easier to understand and modify. The goal of this software is not necessarily to provide a working quantum chemistry program (although it will hopefully do that), but rather to provide a well-engineered set of tools so that scientists can construct their own quantum chemistry programs without going through the tedium of having to write everything. The program is released under the GNU General Public License and is thus freeware. PyQuante can be downloaded from http://pyquante.sourceforge.net. People can subscribe to the pyquante-users mailing list at http://lists.sourceforge.net/lists/listinfo/pyquante-users Here is an example of what the closed-shell Hartree-Fock scripts look like: (best viewed in a fixed-width font...) def rhf(atomlist): "General wrapper for restricted closed-shell hartree fock" from basis_631ss import basis bfs = getbasis(atomlist,basis) S,h = get1ints(bfs,atomlist) Ints = get2ints(bfs) energy = scf(atomlist,S,h,Ints) return energy def scf(atomlist,S,h,Ints,charge=0,ConvCriteria=0.0001,MaxIter=20): "Run the self-consistent field optimization of the wave function" evecs = get_guess(h,S) nel = get_nel_from_atomlist(atomlist,charge) nclosed,nopen = divmod(nel,2) enuke = get_enuke_from_atomlist(atomlist) print "nocc, enuke: ",nocc,enuke eold = 0. for i in range(MaxIter): D = mkdens(evecs,0,nocc) G = get2JmK(Ints,D) F = h+G evals,evecs = GHeigenvectors(F,S) energy = get_energy(h,F,D,enuke) print energy if abs(energy-eold) < ConvCriteria: break eold = energy return energy Rick From barry@zope.com Wed Sep 11 04:32:37 2002 From: barry@zope.com (Barry A. Warsaw) Date: Tue, 10 Sep 2002 23:32:37 -0400 Subject: RELEASED email package version 2.3 Message-ID: I've just released the (standalone) email package version 2.3. This is identical to the version that is in the current cvs development tree for Python 2.3. It is made available as a distutils package for installing in earlier versions of Python. It is compatible with Python 2.1.3 and Python 2.2.1. The email package is a new package for parsing, handling, and generating email messages and other RFC 2822 style documents. It conforms to most of the email related RFCs including 2045-2047 (the MIME RFCs) and 2231. It is intended to replace several older modules in the standard distribution, such as rfc822, mimetools, multifile, mimify, and MIMEWriter, and such non-standard modules as mimecntl. email-2.3.tar.gz is available from the mimelib project on SourceForge: http://sf.net/projects/mimelib/ Enjoy, -Barry From rjones@ekit-inc.com Wed Sep 11 11:07:00 2002 From: rjones@ekit-inc.com (Richard Jones) Date: Wed, 11 Sep 2002 20:07:00 +1000 Subject: SC-Track Roundup 0.5 beta1 - an issue tracking system Message-ID: ===================================================== SC-Track Roundup 0.5 beta1 - an issue tracking system ===================================================== Note: This is the first of two beta releases of the newest version of Roundup. It is strongly recommended that you maintain your existing 0.4 installation if you have one, and run 0.5 on a copy of the database. If you are upgrading from 0.4, you must read doc/upgrading.txt! Roundup requires python 2.1.1 for correct operation. Support for dumbdbm requires python 2.1.2 or 2.2. 2.1.3 and 2.2.1 are recommended. A lot has been done since 0.4: - new backend for metakit (thanks Gordon McMillan) - new backend for gadfly (it's as done as it's going to get) - further split the dbm backends from the core code, allowing easier non-dict-like backends (eg metakit, RDB) - implemented and used the new access control mechanisms (Permissions, Roles) - switched templating to use Zope's PageTemplates (yay!) - switched to sessions for web authentication - added Boolean and Number types - full-text search may also search certain String properties - fixed the journal bloat - updated design document for new access controls - updated customisation document, including more examples - entire database export and import (incl files) - better mailgw help message (feature request #558562) - re-enabled link backrefs from messages (feature request #568714) - the page layout is now templatable - re-worked cgi interface to abstract out the explicit "issue" interface - have index page handle mid-page errors better so header and footer are still visible - saving of named search queries - we handle "not found", access and item page render errors better - fixed double-submit by having new-item-submit redirect at end - daemonify roundup-server (fork, logfile, pidfile) - modify cgitb to display PageTemplate errors better - rename to "instance" to "tracker" - have roundup.cgi pick up tracker config from the environment - revamped look and feel in web interface - cleaned up stylesheet usage - several bug fixes and documentation fixes 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.1+ 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 (a classic bug/feature tracker and a help desk) and five database back-ends (anydbm, bsddb, bsddb3, metakit and gadfly). From lsmithso@NOhare.SPAM.demon.co.uk Thu Sep 12 14:00:02 2002 From: lsmithso@NOhare.SPAM.demon.co.uk (Les Smithson) Date: 12 Sep 2002 14:00:02 +0100 Subject: pymqi 0.4 Message-ID: Pymqi 0.4 is now available at http://www.hare.demon.co.uk/pymqi. This version adds interfaces to the MQINQ & MQSET MQI calls. These allow you to set & inquire Queue Manager & Queue attributes. Pymqi is a Python extension for IBM's Messaging & Queuing middleware, MQSeries (aka WebSphere MQ family). This allows Python scripts to make calls directly to MQI to connect queues and get/put messages on them etc. Pymqi combines the power of Python with the benefits of the messaging model. It can be used to develop test harnesses for MQ based systems, for rapid prototyping of MQ applications, for development of administrative GUI's (when combined with e.g., TkInter), and even for mainstream MQ application development! Pymqi does not replace MQI, but is layered on top of it, so you must have MQ (either client or server) installed before you can use pymqi. From duncan-news@grisby.org Thu Sep 12 21:21:30 2002 From: duncan-news@grisby.org (Duncan Grisby) Date: Thu, 12 Sep 2002 20:21:30 GMT Subject: ANN: omniORB 4.0.0 and omniORBpy 2.0 release candidates Message-ID: I am pleased to announce the release candidates of omniORB 4.0.0 and omniORBpy 2.0. omniORB is a robust, high performance CORBA ORB for C++. omniORBpy is a version for Python. They are freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). For more information, see http://omniorb.sourceforge.net/ The release candidates contain minor bug fixes and new features since the beta 2 releases. Highlights of the new features since omniORB 3.0 and omniORBpy 1: - Updated to CORBA 2.6. - Support for GIOP 1.1 and 1.2. - Wide string and codeset negotiation. - Unix domain and SSL transports. - Bidirectional GIOP. - Flexible thread pool mode. - PortableServer::Current. - Interceptors. - Fixed point. - Complete freeing of all heap allocations. - Efficient in-process calls between C++ and Python. - Python / C++ object reference translation API. - New comprehensive configuration mechanism. - Commercial support. See http://www.omniorb-support.com/ Release notes are available from http://sourceforge.net/project/shownotes.php?release_id=110442 and http://sourceforge.net/project/shownotes.php?release_id=110443 You can download the releases themselves via the release notes pages, or from http://sourceforge.net/project/showfiles.php?group_id=51138 Please try out the release candidates and report any problems you encounter to the omniORB mailing list. The intention is to make a full release in a week or so. Enjoy, Duncan. -- -- Duncan Grisby -- -- duncan@grisby.org -- -- http://www.grisby.org -- From edream@tds.net Thu Sep 12 21:51:31 2002 From: edream@tds.net (Edward K. Ream) Date: Thu, 12 Sep 2002 20:51:31 GMT Subject: ANN: Leo 3.6 outlining editor Message-ID: leo.py 3.6 is now available at: http://sourceforge.net/projects/leo/ leo.py requires Python 2.2 and tcl/tk 8.3 or above. A slashdot article about Leo appeared soon after 3.5 was released. Leo now has many more users and developers; 3.6 is considerably more friendly to Linux as a result. The highlights of 3.6: ---------------------- - Fixed several bugs that appear only on Linux. - Added Match Brackets command. - Added support for MouseWheel (Linux only). - Added support for LaTex and PHP languages. - Improved all aspects of the Help menu. - Discovered a minor bug involving the Python (Idle) window and documented a workaround. - Leo remembers the previous insertion point and scrollbar position when switching between nodes. - The usual small improvements and bug fixes. What is Leo? ------------ - A programmer's editor, an outlining editor and a flexible browser. - A literate programming tool, compatible with noweb and CWEB. - A data organizer and project manager. Leo provides multiple views of projects within a single outline. - Fully scriptable using Python. Leo saves its files in XML format. - Portable. leo.py is 100% pure Python. - Open Software, distributed under the Python License. Links: ------ Leo: http://personalpages.tds.net/~edream/front.html Home: http://sourceforge.net/projects/leo/ Download: http://sourceforge.net/project/showfiles.php?group_id=3458 CVS: http://sourceforge.net/cvs/?group_id=3458 Edward K. Ream -------------------------------------------------------------------- Edward K. Ream email: edream@tds.net Leo: Literate Editor with Outlines Leo: http://personalpages.tds.net/~edream/front.html -------------------------------------------------------------------- From jeremy@zope.com Fri Sep 13 00:13:45 2002 From: jeremy@zope.com (Jeremy Hylton) Date: Thu, 12 Sep 2002 19:13:45 -0400 Subject: ZODB 3.1b1 released Message-ID: I am pleased to announce the first beta release of ZODB3, formerly known as StandaloneZODB. ZODB is an object database for Python that provides transactional persistence while requiring few, if any, changes to application logic. You can get a source release from http://www.zope.org/Products/StandaloneZODB Windows users will need a compiler to build C extensions. I'd be happy to accept a binary installer for Windows, if a user is willing to contribute it. The components you get with the ZODB3 release are as follows: - Core ZODB, including the persistence machinery - Standard storages such as FileStorage - Supporting modules such as ExtensionClass - The persistent BTrees modules - ZEO - Experimental Berkeley storages - Some documentation The beta release contains roughly the same version of ZODB that will be included in Zope 2.6. The two releases are not directly coordinated, so there may be some subtle differences. Many people have contributed to ZODB3. Special thanks to Toby Dickenson for the new ZODB Connection cache. Many people at Zope Corp. have contributed code and tested unreleased versions. The NEWS.txt file contains a list of the major changes since the StandaloneZODB 1.0 release in February. You can also find this list at http://www.zope.org/Products/StandaloneZODB/NEWS Jeremy From rjones@ekit-inc.com Fri Sep 13 05:46:39 2002 From: rjones@ekit-inc.com (Richard Jones) Date: Fri, 13 Sep 2002 14:46:39 +1000 Subject: SC-Track Roundup 0.5 beta2 - an issue tracking system Message-ID: ===================================================== SC-Track Roundup 0.5 beta2 - an issue tracking system ===================================================== Note: This is a beta release of the newest version of Roundup. It is strongly recommended that you maintain your existing 0.4 installation if you have one, and run 0.5 on a copy of the database. If you are upgrading from 0.4, you must read doc/upgrading.txt! Roundup requires python 2.1.1 for correct operation. Support for dumbdbm requires python 2.1.2 or 2.2. 2.1.3 and 2.2.1 are recommended. This beta release fixes the following specific problems: . all backends now have a .close() method, and it's used everywhere . fixed bug in detectors __init__ . switched the default issue item display to only show issue summary (added instructions to doc to make it display entire content) . MANIFEST.in was missing a lot of template files . added generic item editing . much nicer layout of template rendering errors . added context/is_edit_ok and context/is_view_ok convenience methods and implemented use of them in the classic template A lot has been done since 0.4: - new backend for metakit (thanks Gordon McMillan) - new backend for gadfly (it's as done as it's going to get) - further split the dbm backends from the core code, allowing easier non-dict-like backends (eg metakit, RDB) - implemented and used the new access control mechanisms (Permissions, Roles) - switched templating to use Zope's PageTemplates (yay!) - switched to sessions for web authentication - added Boolean and Number types - full-text search may also search certain String properties - fixed the journal bloat - updated design document for new access controls - updated customisation document, including more examples - entire database export and import (incl files) - better mailgw help message (feature request #558562) - re-enabled link backrefs from messages (feature request #568714) - the page layout is now templatable - re-worked cgi interface to abstract out the explicit "issue" interface - have index page handle mid-page errors better so header and footer are still visible - saving of named search queries - we handle "not found", access and item page render errors better - fixed double-submit by having new-item-submit redirect at end - daemonify roundup-server (fork, logfile, pidfile) - modify cgitb to display PageTemplate errors better - rename to "instance" to "tracker" - have roundup.cgi pick up tracker config from the environment - revamped look and feel in web interface - cleaned up stylesheet usage - several bug fixes and documentation fixes 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.1+ 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 (a classic bug/feature tracker and a help desk) and five database back-ends (anydbm, bsddb, bsddb3, metakit and gadfly). From barry@python.org Fri Sep 13 16:48:40 2002 From: barry@python.org (Barry A. Warsaw) Date: Fri, 13 Sep 2002 11:48:40 -0400 Subject: RELEASED email package version 2.3 References: <15742.47445.811488.515719@anthem.wooz.org> Message-ID: >>>>> "BAW" == Barry A Warsaw writes: BAW> I've just released the (standalone) email package version BAW> 2.3. This is identical to the version that is in the current BAW> cvs development tree for Python 2.3. It is made available as BAW> a distutils package for installing in earlier versions of BAW> Python. It is compatible with Python 2.1.3 and Python 2.2.1. BAW> email-2.3.tar.gz is available from the mimelib project on BAW> SourceForge: BAW> http://sf.net/projects/mimelib/ Sorry folks, the email-2.3.tar.gz package was missing one of the test suite files. You'll notice this if you ran "python testall.py" and saw failures due to the missing file msg_31.txt. I've just released email-2.3.1.tar.gz which contains the missing file. There are no other substantive changes in this micro release so if you don't care about the test suite, there's no need to update. -Barry From just@xs4all.nl Fri Sep 13 19:05:55 2002 From: just@xs4all.nl (Just van Rossum) Date: Fri, 13 Sep 2002 20:05:55 +0200 Subject: ANN: FontTools/TTX 2.0 beta 1 Message-ID: I'm proud to announce a Brand New Release of FontTools/TTX, an Open Source Python library and toolkit to manipulate fonts. This is the first beta of version 2.0 -- I intend to release 2.0 final in a couple of months. TTX is a tool to convert TrueType and OpenType fonts to an XML-based text format (also called "TTX") and back. This enables you to edit TTF/OTF tables with a text editor. It's a low level tool, meant for people who are not scared to fiddle with technical details of the OT format. It is implemented in Python. FontTools is a Python library implementing reading and writing of TrueType fonts, OpenType fonts, AFM files, reading of Type 1 fonts (writing is still being planned), and some other formats. No impressive web page yet: http://fonttools.sourceforge.net/ A slightly obsolete end user page can be found here: http://letterror.com/code/ttx/ Just From wari@home.wari.org Sun Sep 15 17:46:10 2002 From: wari@home.wari.org (Wari Wahab) Date: Mon, 16 Sep 2002 00:46:10 +0800 Subject: ANN: pyblosxom weblog software Message-ID: pyblosxom is a weblogging tool written in Python and modelled after blosxom. It is written due to the fact that clones for blosxom exists except for python, so this is my implementation of it. In fact I'm into cloning so much that this announcement was ripped from a Kaa announcement, another weblogging tool written in python. The "download page" can be found here: http://roughingit.subtlehints.net/pyblosxom/ This is really the page of my pyblosxom blog; there are links to the distribution (a tar.gz file) and to a page with an introduction to pyblosxom. Any comments, bug reports, tips, feature requests, etc, etc, are welcome. Particularly eloquent flames will be published on my blog. :-) Especially ones that mentioned how bad my python is. (I'm a newbie:) -- Regards: Wari Wahab http://roughingit.subtlehints.net/ From goodger@users.sourceforge.net Sun Sep 15 18:00:41 2002 From: goodger@users.sourceforge.net (David Goodger) Date: Sun, 15 Sep 2002 13:00:41 -0400 Subject: ANN: DocFactory wxPython app for Docutils Message-ID: Gunnar Schwant has contributed DocFactory, a wxPython GUI application for Docutils. It is in the preliminary stages. For details, please see http://docutils.sf.net/sandbox/gschwant/docfactory/README.html I have begun a "To Do" list: http://docutils.sf.net/sandbox/gschwant/docfactory/NOTES.html The code is available via CVS or snapshot: http://docutils.sf.net/docutils-sandbox-snapshot.tgz Please try it out. Feedback is welcome: bug reports, patches, feature ideas, etc. -- David Goodger Open-source projects: - Python Docutils: http://docutils.sourceforge.net/ (includes reStructuredText: http://docutils.sf.net/rst.html) - The Go Tools Project: http://gotools.sourceforge.net/ From loewis@informatik.hu-berlin.de Mon Sep 16 09:48:41 2002 From: loewis@informatik.hu-berlin.de (Martin v. =?iso-8859-1?q?L=F6wis?=) Date: 16 Sep 2002 10:48:41 +0200 Subject: PyXML 0.8.1 is released Message-ID: Version 0.8.1 of the Python/XML distribution is now available. It should be considered a beta release, and can be downloaded from the following URLs: http://prdownloads.sourceforge.net/pyxml/PyXML-0.8.1.tar.gz http://prdownloads.sourceforge.net/pyxml/PyXML-0.8.1.win32-py2.1.exe http://prdownloads.sourceforge.net/pyxml/PyXML-0.8.1.win32-py2.2.exe http://prdownloads.sourceforge.net/pyxml/PyXML-0.8.1-2.2.i386.rpm Changes in this version, compared to 0.8: * Various bug fixes: - tracing works now with pyexpat - fix registry key for MSIE XBEL support - correct ill-formedness of xmlproc.dtd2schema - avoid adding comments and PIs in the internal subset as Document children when building minidom trees - properly close files in xml.dom.ext.reader.* * XSLT is not installed anymore by default, specify --with-xslt if desired * Update Expat to 1.95.5 * Add features to xml.parsers.expat: - new method "UseForeignDTD" - new attribute "features" * Update to 25 July 2002 LS spec for xml.dom.xmlbuilder. Use expatbuilder if no parser is given to xml.dom.minidom.parse[String]. * Fix many obscure DOM bugs * Define and document the implementation-defined behaviors of cloneNode() for xml.dom.minidom. * Use urllib2 instead of urllib throughout. The Python/XML distribution contains the basic tools required for processing XML data using the Python programming language, assembled into one easy-to-install package. The distribution includes parsers and standard interfaces such as SAX and DOM, along with various other useful modules. The package currently contains: * XML parsers: Pyexpat (Jack Jansen), xmlproc (Lars Marius Garshol), sgmlop (Fredrik Lundh). * SAX interface (Lars Marius Garshol) * minidom DOM implementation (Paul Prescod, others) * 4DOM and 4XPath from Fourthought (Uche Ogbuji, Mike Olson) * Schema implementations: TREX (James Tauber) * Various utility modules and functions (various people) * Documentation and example programs (various people) The code is being developed bazaar-style by contributors from the Python XML Special Interest Group, so please send comments and questions to . Bug reports may be filed on SourceForge: http://sourceforge.net/tracker/index.php?group_id=3D6473&atid=3D106473 For more information about Python and XML, see: http://www.python.org/topics/xml/ --=20 Martin v. L=F6wis http://www.informatik.hu-berlin.de/~loewi= s From duncan@rcp.co.uk Mon Sep 16 17:05:36 2002 From: duncan@rcp.co.uk (Duncan Booth) Date: Mon, 16 Sep 2002 16:05:36 +0000 (UTC) Subject: CFP: UK Python Conference 2003 Message-ID: *** Call for Participation *** UK Python Conference 2003 April 2-3 2003 Holiday Inn, Oxford The UK Python Conference 2003 is being held in conjunction with the larger ACCU conference. The conference will include two days of papers arranged in 90 minute speaking slots with either one or two tracks. The audience is highly technical and will include experts in many fields of computing, some of whom may know little or nothing about Python. Talks will be welcomed on any aspect of Python, but we are especially interested in the following: - Commercial applications for Python - Cross-language talks Speakers are welcome from the UK or the rest of the world, however our budget for overseas speakers may be limited. To submit a proposal, send an email message to duncan@rcp.co.uk by 2nd October 2003. In your message, please include the following: - Speaker name and affiliation - Contact address - Presentation title - A one paragraph abstract -- Duncan Booth duncan@rcp.co.uk int month(char *p){return(124864/((p[0]+p[1]-p[2]&0x1f)+1)%12)["\5\x8\3" "\6\7\xb\1\x9\xa\2\0\4"];} // Who said my code was obscure? From md9ms@mdstud.chalmers.se Tue Sep 17 10:37:53 2002 From: md9ms@mdstud.chalmers.se (Martin =?ISO-8859-1?Q?Sj=F6gren?=) Date: 17 Sep 2002 11:37:53 +0200 Subject: [ANN] pyOpenSSL 0.5.1 released Message-ID: --=-Mb2k4iUqY1hq79w4AYcl Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable pyOpenSSL 0.5.1 --------------- The bugfix-release, 0.5.1, of pyOpenSSL is out. This version fixes the python 1.5 and 2.1 breakage ;) and also introduces some basic PKCS12 support. The release is on SourceForge: http://sf.net/project/showfiles.php?group_id=3D31249&release_id=3D111204 For those of you who don't know it, there's a mailing list for pyOpenSSL. You can subscribe from the project page at http://sf.net/projects/pyopenssl/ What is pyOpenSSL? ------------------ pyOpenSSL is a Python wrapper around the OpenSSL library. It includes access to SSL Contexts, an SSL Connection object that wraps a transport object (usually a socket), an interface to the PRNG support in OpenSSL, X.509 support (certificates, requests, extensions) and some basic PKCS7 and PKCS12 support. And plenty of documentation. ;-) Regards, Martin Sj=C3=B6gren --=-Mb2k4iUqY1hq79w4AYcl Content-Type: application/pgp-signature; name=signature.asc Content-Description: Detta =?ISO-8859-1?Q?=E4r?= en digitalt signerad meddelandedel -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQA9hvfxGpBPiZwE9FYRAsOKAJ4q1RnF/uT/zqBTWzbLvWYd80WHhgCdFPnk uePlTtEJ1EpdeHb8sgWq5fY= =/6LU -----END PGP SIGNATURE----- --=-Mb2k4iUqY1hq79w4AYcl-- From sdeibel@wingide.com Tue Sep 17 15:12:13 2002 From: sdeibel@wingide.com (Stephan R.A. Deibel) Date: Tue, 17 Sep 2002 10:12:13 -0400 (EDT) Subject: O'Reilly Python Success Stories Message-ID: Hi, O'Reilly Associates has agreed to do a Python Success Stories book similar to those that already exist for Perl. This book will be given away for free at bookstores and conferences, and is a great way to showcase what Python can do. If you have a Python success story to tell, please consider contributing to this effort. O'Reilly will do the formatting, cover design, and printing, but the collection and editing of stories is left up to volunteers in the Python community. More information on how to contribute can be found here: http://pythonology.org/successguide While we prefer completed stories, we can also accept responses to the list of questions given in the above URL. Thanks, - Stephan ------------------------------------------------------------------------ Wing IDE for Python Archaeopteryx Software, Inc www.wingide.com Take Flight! From drifty@bigfoot.com Tue Sep 17 20:50:05 2002 From: drifty@bigfoot.com (Brett C.) Date: 17 Sep 2002 12:50:05 -0700 Subject: Python-dev summary for 2002-09-01 to 2002-09-15 Message-ID: This is a summary of traffic on the `python-dev mailing list`_ between September 01, 2002 and September 15, 2002 (exclusive). It is intended to inform the wider Python community of ongoing developments on the list. To comment on anything mentioned here, just post to python-list@python.org or comp.lang.python in the usual way. Give your posting a meaningful subject line, and if it's about a PEP, include the PEP number (e.g. Subject: PEP 201 - Lockstep iteration) All python-dev members are interested in seeing ideas discussed by the community, so don't hesitate to take a stance on a PEP (or anything else for that matter) if you have an opinion. This is the second summary written by Brett Cannon (hopefully my sophomoric performance will be better then most sophomore music albums). Summaries by me (2002-09-15 to ... when I burn out) are archived at: http://www.ocf.berkeley.edu/~bac/python-dev/summaries/index.php You can find summaries by Michael Hudson (2002-02-01 to 2001-07-05) at: http://starship.python.net/crew/mwh/summaries/index.html Summaries by A.M. Kuchling (2000-12-01 to 2001-01-31) are at: http://www.amk.ca/python/dev/ Please note that this summary is written using reStructuredText_ which can be found at http://docutils.sourceforge.net/rst.html . Any unfamiliar punctuation is probably markup for reST; you can safely ignore it (although I suggest learning reST; its nice and is accepted for PEP markup). Also, because of the wonders of reformatting thanks to whatever you are using to read this, I cannot guarantee you will be able to run this text through DocUtils as-is. If you want to do that, get the original text from the archive. I am considering keeping a list of names that people are often referred to in emails. This would serve a dual purpose: allows people who read emails from the list to have a reference to be able to figure out who is who and makes the summaries easier for me because I can then make reference to people by the names I know them by. =) Any comments on this idea are appreciated. .. _python-dev mailing list: http://mail.python.org/mailman/listinfo/python-dev .. _reST: .. _reStructuredText: http://docutils.sf.net/ ============================ `To commit or not commit`_ ============================ Walter Dorwald asked if there were "any objections against committing the patch" for implementing `PEP 293`_ (Codec Error Handling Callbacks). Guido asked what Martin V. Lowis and M.A. Lemburg had to say about it. MAL responded that he was +1 on the patch. Martin was "concerned about the massive amounts of C code, most of which could be expressed way more compact in Python code", but "Walter convinced [MvL] that this does have a real performance impact for real data" so he would live with it. In the end he gave it his vote. Walter said he would check it in (and he has). The PEP has now been moved to the finished PEP list. .. _To commit or not commit: http://mail.python.org/pipermail/python-dev/2002-September/028502.html .. _PEP 293: http://www.python.org/peps/pep-0293.html ======================================= `Proposed Mixins for Wide Interfaces`_ ======================================= Raymond Hettinger suggested adding mixin classes that automatically implement magic methods when certain basic magic methods were already implemented (e.g., "given an __eq__ method in a subclass, adds a __ne__ method"). David Abrahams said that he thought "these are a great idea, *in the context of* an understanding of what we want interfaces to be, say, and do." Guido brought up some points about the initial suggestions Raymond made. He then said that he thought that there wasn't "enough here to warrant putting this into the standard library"; the issue will be revisited when a standard type or interface hierarchy is added to Python (not in 2.3). .. _Proposed Mixins for Wide Interfaces: http://mail.python.org/pipermail/python-dev/2002-September/028543.html =================================== `mysterious hangs in socket code`_ =================================== Jeremy Hylton wrote some threaded code to fetch some web pages that hung when performing a slow DNS operation. Apparently, in Python 2.1 "it produces a steady stream of output -- urls and the time it took to load them". In Python 2.2 and 2.3, though, "it produces little bursts of output, then pauses for a long time, then repeats". Jeremy guessed that it *might* have something to do with Linux's getaddrinfo() being thread-safe by allowing only a single lookup at a time. Aahz said that "gethostbyname() IIRC has frequently been non-reentrant". .. _mysterious hangs in socket code: http://mail.python.org/pipermail/python-dev/2002-September/028555.html ======================================== `Two random and nearly unrelated ideas`_ ======================================== Skip Montanaro had two ideas; one was to make the info in `Misc/NEWS`_ (which is a summary of what has been changed in Python for each release) a web page and the other was "to get rid of the ticker altogether in systems with proper signal support" (see the `2002-08-16 - 2002-09-01 summary`_ for an explanation of what the ticker is). That would get rid of the polling of the ticker and thus reduce the overhead on threads. For the first idea, Guido asked Skip to try seeing what it would look like with reST_ markup and what the resulting page would look like. In response to the second idea, Oren Tirosh said it couldn't be done until "all Python I/O calls are converted to be EINTR-safe" (EINTER-safe means to be able to handle the EINTER signal which what is raised "When an I/O operation is interrupted by an unmasked signal"). That "requires a lot of work in some of the hairiest places in the Python codebase." Fredrik Lundh said that this "sounds like a good topic for a "here's what I learned when trying to fix this problem" PEP. This is most likely in reference to Skip writing the patch to make the ticker global instead of a per-thread issue. Guido said, in terms of signals, to "just say no"; "it is impossible to write correct code in the presense of signals". Guido, in a later email, gave this whole idea a vote of -1,000,000; so it ain't ever going to happen. Some discussion on signals ensued, but Guido never budged from his position. Oren pointed out that if some C code used signals and people didn't handle it in their Python code by checking if IOError was caused by EINTER (as shown below by Oren's code):: while 1: try: except IOError, exc: if exc.errno == errno.EINTR: continue else: raise , it would not restart properly even though there was no reason for it to have stopped. Oren said that Python could add the loop in the C code of the core where EINTR might be raised ("Only low-level functions like os.read_ and os.write_ that map directly to stdio functions should ever return EINTR"). The proposed idea was to wrap functions that might raise this that can be re-entered safely. .. _Two random and nearly unrelated ideas: http://mail.python.org/pipermail/python-dev/2002-September/028555.html .. _Misc/NEWS: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/dist/src/Misc/NEWS .. _2002-08-16 - 2002-09-01 summary: http://www.ocf.berkeley.edu/~bac/python-dev/summaries/2002-08-16--2002-09-01.html .. _os.read: .. _os.write: http://www.python.org/dev/doc/devel/lib/os-fd-ops.html ================================================ `Should KeyError use repr() on its arguments?`_ ================================================ Originally, when an exception was raised and you passed in an optional object to act as a description of why the exception was raised (such as ``KeyError("there is no spoon")`` where ``there is no spoon`` is the optional argument bound to ``.args``), it just returned what args was bound to when you called; ``str() == .args``. Now it calls repr() on what args is bound to; ``str() == str(.args)``. Much better. =) .. _Should KeyError use repr() on its arguments?: http://mail.python.org/pipermail/python-dev/2002-September/028545.html ========================================== `New 'spambayes' project on SourceForge`_ ========================================== Thanks to great work done by Tim Peters and several other contributors, Barry Warsaw started an SF project to host the spambayes code. It can be found at http://sf.net/projects/spambayes . There are two mailing lists: http://mail.python.org/mailman-21/listinfo/spambayes and http://mail.python.org/mailman-21/listinfo/spambaye-checkins (yes, that is Mailman 2.1, and yes, you will "help be a guinea pig for Mailman 2.1"). .. _New 'spambayes' project on SourceForge: http://mail.python.org/pipermail/python-dev/2002-September/028626.html ========================= `Subsecond time stamps`_ ========================= Martin V. Lowis wanted to introduce subsecond timestamps on platforms that supported it. He suggested adding another field to stat, create a new type, or make st_mtime a floating point. The first one option is easy, the second has the usual problems of defining a new type, and the third does not guarantee enough accuracy. Paul Svensson and Guido said that the last option (turning st_mtime into a float) was the most Pythonic. MvL agreed, but worried about breaking code that expected an int. Guido then suggested that maybe the new field is the way to go; define something like st_mtimef that will contain the float if available or contain an int otherwise. Tim Peters also weighed in with his `IEEE 754`_ voodoo about how a float can hold enough info to be accurate up to 100 nanoseconds if you only span a 33 years. That causes an issue starting in 2003 since that is 33 years past the epoch (1970). But then MvL discovered that st_mtime was already a float on the Mac; had that caused issues? Jack Jansen of course chimed in on this by saying that it caused him a headache about once a year in the form of a failing test (other issues caused by timestamps is the Classic Macs having the epoch at 1904 and not using UTC time). He said he would prefer to see the timestamp as a cookie that was passed into a function that spit out "something guaranteed to be of your liking". To address the other issues that Jack mentioned, Guido suggested that all timestamps be converted to UTC time with the epoch at 1970. MvL has `SF patch 606592`_ up on SF that has already been closed that makes all the relevant changes to have timestamps return floats. .. _Subsecond time stamps: http://mail.python.org/pipermail/python-dev/2002-September/028648.html .. _IEEE 754: http://grouper.ieee.org/groups/754/ .. _SF patch 606592: http://www.python.org/sf/606592 ================================= `64-bit process optimization 1`_ ================================= Bob Ledwith posted a simple patch for `Include/object.h`_ that changed the order of certain parts of the PyObject_HEAD macros, affecting PyObject and PyVarObject. This was for a 64-bit platform performance boost (40% for large data sets according to Bob). The reordering eliminated some padding in the struct and allows more Python objects to fit in the L2 cache, or at least that is what Bob thinks is going on. Guido pointed out that this would save 8 bytes per object; he thought all of this was "Interesting!". But alas, using this patch would break binary compatibility. Guido was not sure, though, whether it had been broken yet between Python 2.2 and 2.3 and thus he might be "being too conservative here" in terms of saying that it should be held back for now. A problem Guido pointed out for 64-bit systems, is that theoretically the reference count for an object could go negative with enough references as things stand now. Guido then suggested that perhaps refcnt (struct item that holds the reference count) should be a ``long``. And while dealing with that, Guido suggested that anything that stores a length should store that number in a ``long``. Chime in Tim Peters. He pointed out that it was agreed upon years ago to move refcnt to ``long`` but no one had bothered to do it. Heck, even Guido thought for a long time that it was a long when it wasn't; it required Tim to "beat that out of [Guido] " to stop him from saying that it was a ``long``. He then pointed out that Win64 was still only 4 bytes for a ``long``; what was really desired was for it to be ``Py_intptr_t`` which is the Python way for spelling the C99 type that we wanted. Apparently C99 has a way to specify that things be a specific byte length (now if everyone just had a C99 compiler we wouldn't need these macros; oh, to dream...). Tim also pointed out that what we wanted for the type that held a length argument to be size_t since that is what strlen() and malloc() are restricted by. He said that he writes all of his "string-slinging code as using size_t vars now". Tim pointed out that the issue then became "Whether it's worth the pain to change this stuff" which "depends on whether we think 64-bit boxes are just another passing fad like the Internet ". =) Martin V. Lowis agreed with the changing of refcnt to a long but had reservations about using size_t for the length field (ob_size). He pointed out that some objects put negative values into that field. Frederik suggested that the proposed changes be default on 64-bit systems since the chances that they are willing to recompile is higher then people on 32-bit systems. He also suggested making it a compiler option. Guido thought it was a good idea. But then Mats Wichmann discovered that the switch to long killed the performance boost. So Guido re-iterated that he thinks it should be a compiler option only on 64-bit systems; have "compat", "optimal", and "right" compiler options. As of yet nothing has done about this. .. _64-bit process optimization 1: http://mail.python.org/pipermail/python-dev/2002-September/028677.html .. _Include/object.h: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/dist/src/Include/object.h ========================================== `Weeding out obsolete modules and Demos`_ ========================================== Jack Jansen noticed that there demos for some of the SGI-specific modules that use severely outdated systems and hardware (stuff discontinued 8 to 12 years ago). Guido gave the go-ahead to yank them from CVS. This has yet to be done. .. _Weeding out obsolete modules and Demos: http://mail.python.org/pipermail/python-dev/2002-September/028718.html ============== `utf8 issue`_ ============== (This thread actually started in August) There was a bug in Python 2.2 that raised a UnicodeError when trying to decode a lone surrogate (explanation of surrogates to follow this summary). This caused issues in importing .pyc files that contained a lone surrogate because marshal_ (which is what is used to create .pyc files) encodes Unicode_ literals in UTF-8. This has all been fixed in Python 2.3, but Guido was wondering how to backport this for Python 2.2.2. The option of bumping the magic number for .pyc files was raised and instantly thrown out by Guido; "Bumping MAGIC is a no-no between dot releases". So M.A. Lemburg suggested to either fix the Unicode encoder or change the Unicode decoder to handle the malformed Unicode. MAL wasn't sure, though, if some security issue would be raised by the latter option. Guido said go for the latter and didn't see any possible security issue since "If someone you don't trust can write your .pyc files, they can cause your interpreter to crash by inserting bogus bytecode". Explanation of lone surrogates: In Unicode, a surrogate pair is when you create the representation of a character by using two values. So, for instance, UTF-32 can cover the entire Unicode space (since Unicode is 20 bits, although MvL says it is really more like 21 bits), but UTF-16 can't. To solve the issue for an encoding that cannot cover all possible characters in a single value a character can be represented as a pair of UTF-16 values. The high surrogate cover the high 10 bits while the low surrogate cover the lower 10 bits. High and low surrogates can never be the same since they are defined by a range of possible values and those ranges do not overlap. So with the proper high and low surrogate paired together you can make any possible Unicode character. The problem in Python 2.2.1 is that when there is only a lone surrogate (instead of there being a pair of surrogates), the encoder for UTF-8 messes up and leaves off a UTF-8 value. The following line is an example: >>> u'\ud800'.encode('utf-8') '\xa0\x80' #In Python 2.2.1 '\xed\xa0\x80' #In Python 2.3a0 Notice how in Python 2.3a0 the extra value is inserted so as to make the representation a complete Unicode character instead of only encoding the half of the surrogate pair that the encode was given. You can read http://216.239.37.100/search?q=cache:Dk12BZNt6skC:uk.geocities.com/BabelStone1357/Software/surrogates.html for more info. Thanks goes to Frederik for the link and Guido for some clarification. .. _utf8 issue: http://mail.python.org/pipermail/python-dev/2002-August/028254.html .. _marshal: http://www.python.org/dev/doc/devel/lib/module-marshal.html .. _Unicode: http://www.unicode.org/ ===================================== `Documentation inconsistency in re`_ ===================================== Christopher Craig noticed that the docs for the re_ module for the ``\b`` metacharacter was incorrect; it says that "the end of a word is indicated by whitespace or a non-alphanumeric character". That would indicate that an underscore would be the end of a word, which turns out to be false. Frederik said that "\b is defined in terms of \w and \W" and thus allows underscore to be a alphanumeric character. The documentaiton has been fixed. .. _Documentation inconsistency in re: http://mail.python.org/pipermail/python-dev/2002-September/028644.html .. _re: http://www.python.org/dev/doc/devel/lib/module-re.html ======================= `Codecs lookup order`_ ======================= Francois Pinard discovered that for the codecs_ module "one should be careful about **not** [altered emphasis] naming a module after the encoding name, when closely following the documentation in the Library Reference manual". This is because the codecs module first searches the registry of codecs, then searches for a module with the same name and use that module. The issue comes up when the module does not contain a function named getregentry(); "\`encodings.lookup()` expects a \`getregentry` function in that module, does not find it, and raises a CodecRegistryError, not leaving a chance to subsequent codec search functions to be used". M.A. Lemburg said that this has been fixed in Python 2.3 and will be in 2.2.2 by having encodings.lookup() return None if getregentry() is not found and thus allowing the search to continue. .. _Codecs lookup order: http://mail.python.org/pipermail/python-dev/2002-September/028676.html .. _codecs: http://www.python.org/dev/doc/devel/lib/module-codecs.html ================================= `raw headers in rfc822.Message`_ ================================= John Spurling provided a two-line hack to keep the raw headers in an rfc822.Message_ . Barry responded that email.Message.Message_ keeps the raw headers around. But the reason I am summarizing this is what this thread quickly changed to is how to properly generate a patch. Patches should be generated using UNIX diff, either the -c or -u option with preference for -c (using cvs diff -c is even better; puts the version of the file you are diffing with in the output); Mac folk can send MPW diffs, but UNIX diff is the definitely preference. Always put the order of the files ``diff -c OLD_FILE NEW_FILE`` . And always post the patches_ to SourceForge_! Getting random patches, no matter how small, on the list is annoying (at least to me) because the point of the list is to discuss the design and implementation of Python, not to patch Python. SF is used so that Python-dev does not need to be bothered with mundame problems like applying patches (and to annoy Aahz with SF's UI sucking in Lynx_ =). So please, for my sake and everyone else on Python-dev, use SF! For a funny email from Raymond Hettinger about developing for Python read http://mail.python.org/pipermail/python-dev/2002-September/028725.html . .. _raw headers in rfc822.Message: http://mail.python.org/pipermail/python-dev/2002-September/028682.html .. _rfc822.Message: http://www.python.org/dev/doc/devel/lib/message-objects.html .. _email.Message.Message: http://www.python.org/dev/doc/devel/lib/module-email.Message.html .. _patches: http://sourceforge.net/patch/?group_id=5470 .. _SourceForge: http://www.sourceforge.net/ .. _Lynx: http://lynx.browser.org/ =================== `type categories`_ =================== Yes, the `same thread`_ from the `last summary`_ is back. This thread has become the bane of my summarizing existence. =) Aahz asked "why wouldn't we simply use attributes to hold" interfaces that a class implemented (think of __slots__). David Abrahams then brought up the idea of just adding interfaces to the __class__ attribute. Guido then chimed in on the attributes idea. He pointed out that this is how Zope does it, using the __inherits__ attribute. The limitation is that "it isn't automatically merged properly on multiple inheritance, and adding one new interface to it means you have to copy or reference the base class __inherits__ attribute". And as for David's idea of just adding to __class__, that doesn't work because there is no way to limit the interface; you need "Something like private inheritance" for when an interface is broken by some inherited class. David subsequently added the issue of being able to disinherit when an interface is not valid but is inherited by default as another problem for using inheritence for interfaces. David then brought up the issue of having Python being so dynamic that you could inject an interface if you used __class__ like he suggested through black magic code. If the injected interface didn't work because of the inheritence chain, then you have a problem. Barry Warsaw brought in his objections. He tried playing Devil's Advocate by saying that Guido had said that inheritance would not be the only way to handle interfaces, but that it would be the predominent way. But this duality would complicate any conformsto()-like function since it would have to handle two different ways for a class to get an interface. Barry then brought up the objection that he didn't like the idea of using straight inheritence because he wanted a syntactic way to separate out interfaces. As a side note, Guido pointed out that __slots__ is provisional; nicer syntax will eventually surface when Guido gets over his "fear of adding new keywords". .. _type categories: http://mail.python.org/pipermail/python-dev/2002-September/028738.html .. _same thread: http://www.ocf.berkeley.edu/~bac/python-dev/summaries/2002-08-16--2002-09-01.html#type-categories .. _last summary: http://www.ocf.berkeley.edu/~bac/python-dev/summaries/2002-08-16--2002-09-01.html ======================================= `flextype.c -- extended type system`_ ======================================= Christian Tismer has come up with a replacement for the etype which is "a hidden structure that extends types when they are allocated on the heap" (you can find it in `Objects/typeobject.c`_ in the CVS_). There is a limitation with the etype where it could not be extended by metatypes. Well, Chris worked his magic and came up with a new flextype that allows overriding of methods. So with Christian's code you would be able to override methods in a type without having to hack something together to handle the overriding correctly; it would be handled automatically. Through some clarification from Christian and Guido, it was pointed out to me (as of this moment I am the only one to make any noise on this thread, and it was for this summary) that this simplifies an esoteric issue; note the use of the words "metatype" above. This is type/metatype black magic hacking. Spiffy, but something most of us "normal" folk will not have to worry about. .. _flextype.c -- extended type system: http://mail.python.org/pipermail/python-dev/2002-September/028736.html .. _Objects/typeobject.c: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/dist/src/Objects/typeobject.c .. _CVS: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/#dirlist From lutz@rmi.net Tue Sep 17 23:00:21 2002 From: lutz@rmi.net (Mark Lutz) Date: Tue, 17 Sep 2002 16:00:21 -0600 Subject: ANN: Python training, Colorado, Oct 28-30 Message-ID: I will be holding another 3-day Python training session in Colorado, on October 28-30. This is a public class, open to individual enrollments. For more details about this session, please visit this page: http://www.rmi.net/~lutz/oct02-longmont-class.html General course details are maintained here: http://www.rmi.net/~lutz/mytrain.html Cheers, --Mark Lutz (http://www.rmi.net/~lutz) From salmonia.nospam.please@cardiff.ac.uk Wed Sep 18 13:17:54 2002 From: salmonia.nospam.please@cardiff.ac.uk (Alan James Salmoni) Date: Wed, 18 Sep 2002 13:17:54 +0100 Subject: Release 20021809 of SalStat Statistics Message-ID: Just a quick note to announce the latest release of the SalStat statistics package. It was written using Python and wxPython. New features: This release is just for Windows, and includes all the dependencies (therefore there is no need to download wxPython). There should be a similar version for Linux soon. All available from the website at http://salstat.sunsite.dk. Alan James Salmoni SalStat. From mal@lemburg.com Thu Sep 19 18:30:41 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Thu, 19 Sep 2002 19:30:41 +0200 Subject: ANN: eGenix.com mxODBC Python Database Interface Version 2.0.5 Message-ID: ________________________________________________________________________ ANNOUNCING: eGenix.com mxODBC Database Interface for Python 1.5.2 - 2.2 Version 2.0.5 Full Source Python extension providing ODBC connectivity to Python applications on Windows, Unix abd Linux ________________________________________________________________________ WHAT IS IT ?: The mxODBC Database Interface allows users to connect from Python to just about any database on the market today, on Windows, Unix and Linux -- using just one interface to program against for all supported databases and platforms. This makes mxODBC the ideal basis for writing cross-platform database programs and utilities. mxODBC is included in the eGenix.com mx COMMERCIAL Extension Package for Python, the commercial part of the eGenix.com mx Extension Series, a collection of professional quality software tools which enhance Python's usability in many important areas such as ODBC database connectivity, fast text processing, date/time processing and web site programming. See http://www.egenix.com/ for details. ________________________________________________________________________ WHAT'S NEW ? The 2.0.5 version introduces work-arounds for bugs in various ODBC drivers to enhance the compatibility of mxODBC with Unicode-aware ODBC drivers such as the latest MS Access and MS SQL Server drivers. ________________________________________________________________________ EGENIX.COM MX COMMERCIAL PACKAGE OVERVIEW: mxODBC - Generic ODBC 2.0-3.5 interface for Python mxODBC is an extension package that provides a Python Database API compliant interface to ODBC capable database drivers and managers. In addition to the capabilities provided through the standard DB API it also gives access to a rich set of catalog methods which allow you to scan the database for tables, procedures, etc. Furthermore, it uses the mxDateTime package for date/time value interfacing eliminating most of the problems these types normally introduce (other in/output formats are available too). mxODBC allows you to interface to more than one database from one process, making inter-database interfacing very flexible and reliable. The source version includes a varity of preconfigured setups for many commonly used databases such as MySQL, Oracle, Informix, Solid, SAP DB, Sybase ASA and ASE, DBMaker and many more. The precompiled versions for Windows and Linux include the interfaces to the standard ODBC manager on these platforms to allow for a more easily configurable setup. More details are available at: http://www.egenix.com/files/python/mxODBC.html ________________________________________________________________________ WHERE CAN I DOWNLOAD IT ? The download archives and instructions for installing the package can be found at: http://www.egenix.com/files/python/eGenix-mx-Extensions.html#Packages Note that in order to use the eGenix.com mx COMMERCIAL package you will first need to install the eGenix.com mx BASE package which can be downloaded from the same location. ________________________________________________________________________ WHERE CAN I BUY LICENSES ? mxODBC is free for non-commercial use. Commercial users have to buy licenses for continued use after a 30-day evaluation period. Special licensing setups are available for commercial product developers. Please see http://www.egenix.com/files/python/eGenix-mx-Extensions.html#BuyLicenses for details. ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Commercial quality support for these packages is available from eGenix.com. Please see http://www.egenix.com/files/python/eGenix-mx-Extensions.html#Support for details about our support offerings. ________________________________________________________________________ Enjoy, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH _______________________________________________________________________ eGenix.com -- Makers of the Python mx Extensions: mxDateTime,mxODBC,... Python Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From gmcm@hypernet.com Thu Sep 19 23:38:09 2002 From: gmcm@hypernet.com (Gordon McMillan) Date: Thu, 19 Sep 2002 18:38:09 -0400 Subject: ANN: Installer 5b4 Message-ID: Announcing version 5b4 of Installer: http://www.mcmillan-inc.com/installer_dnld.html Changes in 5b4: Bug fixes: - recompile if .py file in a package is newer - fix segfault on Linux / Unix if executable is on the $PATH - fix segfault / access violation on very long script names - many other minor bug fixes Enhancements: - works with .pyw files (or any file extension, including none) - add --strip option to run the executable and shared libs through strip. 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 5b4Easy Python app deployment. (19-Sep- 2002). From robin@alldunn.com Fri Sep 20 02:42:24 2002 From: robin@alldunn.com (Robin Dunn) Date: Thu, 19 Sep 2002 18:42:24 -0700 Subject: ANNOUNCE: wxPython 2.3.3.1 Message-ID: wxPython 2.3.3.1 has just been released! You can get binaries for Win32, Mac OS X or Linux, as well as sources, documentaion, etc. from http://wxPython.org/ or directly from SourceForge at http://sf.net/project/showfiles.php?group_id=10718&release_id=111669 wxPython is an extension module for Python that provides access to many of the wxWindows GUI C++ classes from applications written in the Python programming language. It uses native controls wherever possible providing native Look and Feel as well as the speed you would expect from natvie compiled applications. Major changes from the previous release are listed below. -- Robin Dunn Software Craftsman http://wxPython.org Java give you jitters? Relax with wxPython! Changes in 2.3.3.1 ------------------ Added wxSplashScreen. Added wxGenericDirCtrl. Added wxMultiChoiceDialog. The calltip window and autocomplete window in wxSTC will now use a wxPopupWindow if available on the platform (and functioning correctly) so they can extend beyond the client area of the STC if needed. Finished wrapping and providing typemaps for wxInputStream and also added the stream ctor and other methods for wxImage so images can now be loaded from any Python "file-like" object. Changed the img2py tool to use PNG instead of XPM for embedding image data in Python source code, and the generated code now uses streams to convert the image data to wxImage, wxBitmap, or wxIcon. Added the wxPython.lib.rcsizer module which contains RowColSizer. This sizer is based on code from Niki Spahiev and lets you specify a row and column for each item, as well as optional column or row spanning. Cells with no item assigned to it are just left blank. Stretchable rows or columns are specified and work the same as in wxFlexGridSizer. Updated XRCed from Roman Rolinsky Added wxBufferedDC. Upgraded wxSTC from Scintilla 1.40 to Scintilla 1.45, and then again to version 1.47, and one more time to 1.48! UNICODE! wxWindows/wxPython can be compiled with unicode support enabled or disabled. Previous to wxPython 2.3.3 non-unicode mode was always used. Starting with 2.3.3 either mode is supported, but only if it is also available in wxWindows on the platform. Currently wxWindows only supports unicode on MS Windows platforms, but with the recent release of GTK+ 2.0 it is only a matter of time until it can be done on wxGTK (Linux and other unixes) as well. Unicode works best on platforms in the NT branch of the Windows family tree (NT, win2k, XP) but it is now also possible to use the same unicode binaries on win95/98/ME platforms as well! This is done by using a special library and DLL with the application called MSLU, (Microsoft Layer for Unicode). It simply gets out of the way if the app is run on an NT box, otherwise if run on a win9x box it loads a special DLL that provides the unicode versions of the windows API. So far I have not been able to get this to work perfectly on win9x. Most things work fine but wxTaskBarIcon for example will cause a crash if used with the unicode build on win95. So how do you use it? It's very simple. When unicode is enabled, then all functions and methods in wxPython that return a wxString from the C++ function will return a Python unicode object, and parameters to C++ functions/methods that expect a wxString can accept either a Python string or unicode object. If a string object is passed then it will be decoded into unicode using the converter pointed to by wxConvCurrent, which will use the default system encoding. If you need to use a string in some other encoding then you should convert it to unicode using the Python codecs first and then pass the unicode string to the wxPython method. Added wxListCtrlAutoWidthMixin from Erik Westra. Added wxIconBundle and wxTopLevelWindow.SetIcons. Added wxLocale and wxEncodingConverter. A little black magic... When the C++ object (for a window or whatever) is deleted there is no way to force the Python shadow object to also be destroyed and clean up all references to it. This leads to crashes if the shadow object tries to call a method with the old C++ pointer. The black magic I've done is to replace the __class__ in the Python instance object with a class that raises an exception whenever a method call (or other attribute access) is attempted. This works for any class that is OOR aware. Added OOR support for wxGridCellRenderer, wxGridCellEditor, wxGridCellAttr, wxGridCellAttrProvider, wxGridTableBase and their derived classes. Added wxImage.GetDataBuffer which returns an in-place edit buffer of the image data. (Patch #546009) Added a sample that shows how to embed wxPython in a wxWindows C++ application. Added wxPyWindow, wxPyPanel and wxPyControl which are just like their wx counterparts except they allow some of the more common C++ virtual methods to be overridden in Python derived classes. The methods supported are: DoMoveWindow DoSetSize DoSetClientSize DoSetVirtualSize DoGetSize DoGetClientSize DoGetPosition DoGetVirtualSize DoGetBestSize InitDialog TransferDataFromWindow TransferDataToWindow Validate AcceptsFocus AcceptsFocusFromKeyboard GetMaxSize AddChild RemoveChild If there are other methods that you think should be supported please let me know. Changed wxGenButton to derive from wxPyControl and overload DoGetBestSize and AcceptsFocus. Added wxArtProvider. Added wxCallAfter which is a helper function that registers a function (or any callable Python object) to be called once the next time there are no pending events. This is useful for when you need to do something but it can't be done during the current event handler. The implementation is very simple, see wxPython/wx.py. Fixed a boatload of reference leaks. Added a demo of using a sizer in a wxScrolledWindow, in effect creating a ScrolledPanel. Added a sample to the demo that shows how to use radio menu items, and other menu stuff. Added wxIEHtmlWin. This is essentially the same as using IE with the ActiveXWrapper already in the library, but it is implemented all in C++ and therefore does not need any of the modules from win32all and so it is less fragile in the face of changes. Fixed the ActiveXWrapper problem. Looks like when the win32com modules make a "callback" that they (incorrectly, IMHO) allocate a transient thread state structure. Since wxPython is now saving tstates for it's own callbacks it ended up using garbage after win32com got rid of the temporary tstate... Added a generic static text control to wxPython.lib.stattext. This is so things like Boa and PythonCard can have a static text that can respond to mouse events and etc. Changed the wxDateTime.Parse* methods to return an int that will be -1 on failure, and the index where parsing stopped otherwise. Moved tools to be a Python package in wxPython.tools, added scripts to import and launch each tool. This will let you import and use the tools in your own scripts or apps as needed. On Linux and OS X the tool scripts are installed to {prefix}/bin so you should be able to easily launch them from the command line. For example, PyCrust can be started with just the "pycrust" command. Added a sample to the demo that catches various key events and displays the details of the event. Added wxWizard, wxWizardPage, wxWizardPageSimple and wxPyWizardPage. Added wxXmlResourceHandler which allows you to create custom handlers for nonstandard class types in XRC resources. See the demo for an example. Added wxPython.lib.mixins.rubberband module from Robb Shecter. Added wxTimeCtrl from Will Sadkin. From sholloway@runeblade.com Fri Sep 20 09:21:37 2002 From: sholloway@runeblade.com (Shane Holloway (RuneBlade)) Date: Fri, 20 Sep 2002 02:21:37 -0600 Subject: ANN: RuneBlade-Foundation-0.3.2 Message-ID: #~ ANN: RuneBlade-Foundation-0.3.2 ~~~~~~~~~~~~~~~~~~~ RuneBlade Foundation is a set of GUI skinning and other tools created to = ease the development of XML-based applications. Application such as Jabber = (XML)=20 for communications; XML "skin" for a wxPython GUI; or, an XML "skin" for = xhtml or svg output similar to other templating engines. More information, including distributables, can be found at=20 http://www.runeblade.com/foundation/ or by contacting the author at shane.holloway@runeblade.com RuneBlade Foundation Release 0.3.2 includes: Updated Skinning code to work with wxPython 2.3.3.1 and 2.3.2.1 Addition of an Aspect Oriented support package Alpha-level addition of an Aspect Oriented Subject Observer package And many optimizations and bugfixes See http://www.runeblade.com/foundation/revision.html for more = information. RuneBlade Foundation is governed by a BSD style open-source LICENSE, and = can=20 be found at http://www.runeblade.com/foundation/bsd.html Future announcements will also be made via mailing list, which can be = found=20 at http://www.runeblade.com/mailman/listinfo/foundation-announce #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ RuneBlade-Foundation-0.3.2 - RuneBlade Foundation is a set of GUI skinning and other tools created = to=20 ease the development of XML-based applications. (20-Sep-02) From Sylvain =?iso-8859-1?Q?Th=E9nault?= Fri Sep 20 16:23:49 2002 From: Sylvain =?iso-8859-1?Q?Th=E9nault?= (Sylvain =?iso-8859-1?Q?Th=E9nault?=) Date: Fri, 20 Sep 2002 17:23:49 +0200 Subject: [ANN] PyReverse 0.4 Message-ID: What's new ? ------------ * add pyvcg command line tool * add support for *.pyreverserc * documentation reorganization and improvement * fix a bug in pyargo What's PyReverse ? ------------------ Pyreverse is a set of utilities to reverse enginering Python code. So far, it features dependency analysis tools, unittest generation, and XMI generation for importation in a UML modeling tool. A special module can be used to generate files readable by Argo UML. It uses a representation of a Python project in a class hierarchy which can be used to extract any information (such as generating UML diagrams and make a few statistics from the Python code, as "pyargo" and "pystats") Home page --------- http://www.logilab.org/pyreverse/ Download -------- ftp://ftp.logilab.org/pub/pyreverse/ Mailing list ------------ mailto://xml-logilab@logilab.org -- Sylvain Thénault LOGILAB http://www.logilab.org From jeremy@zope.com Fri Sep 20 17:58:45 2002 From: jeremy@zope.com (Jeremy Hylton) Date: Fri, 20 Sep 2002 12:58:45 -0400 Subject: CFP: Lightweight Languages 2002 (LL2) Message-ID: Lightweight Languages Worshop 2002 (LL2) ---------------------------------- Saturday, November 9, 2002, MIT, Cambridge, MA http://ll2.ai.mit.edu mailto:ll2@ai.mit.edu CALL FOR PRESENTATIONS LL2 will be an intense, exciting, one-day forum bringing together the best programming language implementors and researchers, from both academia and industry, to exchange ideas and information, to challenge one another, and to learn from one another. The focus of the workshop is not whether or not a particular language is "lightweight", but how to get usable and useful programming tools into the hands of programmers, minimizing dogma, and maximizing flexibility. Proposal Abstracts - due Tuesday Oct. 8: ------------------ We are seeking two to five page abstracts of talks to be given at the workshop. There will be two talk lengths: (1) Rapid Fire: 10 minutes strict time limit. (2) Regular: 30 minutes. Some suggested topics are: * Success or failure stories: History and analysis of: - language design: features that either worked out great or were a curse, - language implementation: clever implementation ideas that either worked or failed miserably, - application war stories involving lightweight languages. * "From scripts to programs" - software engineering with lightweight and/or a mix of languages. How to (or not to!) scale from little scripts to large, complex applications. * From ivory tower to cube - what language implementors need to know from academic programming languages research. * and back. Indicate whether you intend the talk to be a 10 minute or a 30 minute talk. Send submissions to: ll2-submit@ai.mit.edu We want presentations that will inspire, motivate, and educate. We want language implementors and researchers to leave the workshop fired up with ideas for future languages, features, and implementation tricks. We want language users to leave the workshop fired up with new ideas and new tools. In addition to submitted presentations, there will be a number of invited talks, and a panel or debate. After the workshop, there will be an evening social event and dinner. Last year's workshop is online at http://ll1.mit.edu. Dates: Tuesday, Oct. 8 - submissions due by end of day. Tuesday, Oct. 15 - notification of acceptance Saturday, Nov. 9, 9am-7pm - LL2! Program Committee: Paul Graham Jeremy Hylton Shriram Krishnamurthi Mike Salib Olin Shivers Dan Sugalski Greg Sullivan (chair) Dan Weinreb From uche.ogbuji@fourthought.com Sat Sep 21 01:05:52 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: 20 Sep 2002 18:05:52 -0600 Subject: New Python/XML column on xml.com Message-ID: The first installment of my new "Python&XML" column has appeared on xml.com. The State of the Python-XML Art: http://www.xml.com/pub/a/2002/09/18/py.html In this article, a survey of the many tools available for XML processing in Python. -- Uche Ogbuji Fourthought, Inc. http://uche.ogbuji.net http://4Suite.org http://fourthought.com Apache 2.0 API - http://www-106.ibm.com/developerworks/linux/library/l-apache/ Python&XML column: Tour of Python/XML - http://www.xml.com/pub/a/2002/09/18/py.html Python/Web Services column: xmlrpclib - http://www-106.ibm.com/developerworks/webservices/library/ws-pyth10.html From jjl@pobox.com Sun Sep 22 20:19:42 2002 From: jjl@pobox.com (John J. Lee) Date: Sun, 22 Sep 2002 20:19:42 +0100 Subject: ClientForm -- HTML form handling Message-ID: http://wwwsearch.sourceforge.net/ClientForm ClientForm 0.0.2a WARNING: this is an alpha release. The API may change, and don't expect everything to work properly! ClientForm is a Python module for handling HTML forms on the client side, useful for parsing HTML forms, filling them in and returning the completed forms to the server. It is a port (more-or-less) of Gisle Aas' Perl module HTML::Form, from the libwww-perl library. import ClientForm import urllib2 request = urllib2.Request("http://www.acme.com/form.html") response = urllib2.urlopen(request) forms = ClientForm.ParseResponse(response) form = forms[0] form["author"] = "Gisle Aas" request2 = form.click("Thanks") response2 = urllib2.urlopen(request2) print result2.geturl() print result2.info() # headers for line in result2.readlines(): # body print line All of the standard input types are supported: TEXT, PASSWORD, FILE, HIDDEN, BUTTON, RESET, IMAGE, SUBMIT, CHECKBOX, SELECT/OPTION and RADIO. TEXTAREA and FILE (for file upload) are not yet supported, but will be in a future version. Python 2.0 or above is required. I will backport to 1.5.2 later. To run the tests, you need the unittest module (from PyUnit). John From dummy1@net-es.dk Sun Sep 22 22:32:12 2002 From: dummy1@net-es.dk (Per Jensen) Date: Sun, 22 Sep 2002 23:32:12 +0200 Subject: [ANN] wrapper around 'find' 'cpio' Message-ID: This is to announce a very simple yet useful wrapper around the GNU tools 'find', 'cpio', 'gzip' and 'zcat'. The script makes is easy to do a verified backup of a hierarchy of directories using sane tool options (I hope !). Restoring a few files from the archive selected by a pattern is simple and straightforward. Filenames with non ASCII characters are restored correctly. If they are shown correctly, depends on the setting of LC_ALL. A recipe for success is included in the script. The homepage is here: http://www.net-es.dk/~pj/python/backup-admin/ Give it a spin and tell me if it works for you. /Per From mal@lemburg.com Mon Sep 23 11:44:44 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Mon, 23 Sep 2002 12:44:44 +0200 Subject: ANN: eGenix.com mx BASE Extension Package 2.0.4 Message-ID: ________________________________________________________________________ ANNOUNCING: eGenix.com mx BASE Extension Package for Python Version 2.0.4 Open Source Python extensions providing important and useful services for Python programmers. ________________________________________________________________________ WHAT IS IT ?: The eGenix.com mx BASE Extensions for Python are a collection of professional quality software tools which enhance Python's usability in many important areas such as fast text searching, date/time processing and high speed datatypes. Python is an object-oriented Open Source programming language which runs on all modern platforms (http://www.python.org/). By integrating ease-of-use, clarity in coding, enterprise application connectivity and rapid application design, Python establishes an ideal programming platform for todays IT challenges. The tools have a proven record of being portable across many Unix and Windows platforms. You can write applications which use the tools on Windows and then run them on Unix platforms without change due to the consistent platform independent interfaces. All available packages have proven their stability and usefulness in many mission critical applications and various commercial settings all around the world. ________________________________________________________________________ WHAT'S NEW ? The RPM packages were updated to install to /usr/ instead of /usr/local/ to comply with the Linux Standard Base (LSB) and to be compatible with the Python RPMs which are available from python.org. As always we are providing precompiled versions of the package for Windows and Linux as well as sources which allow you to install the package on all other supported platforms. ________________________________________________________________________ EGENIX.COM MX BASE PACKAGE OVERVIEW: mxDateTime - Generic Date/Time Types mxDateTime is an extension package that provides three new object types, DateTime, DateTimeDelta and RelativeDateTime, which let you store and handle date/time values in a much more natural way than by using ticks (seconds since 1.1.70 0:00 UTC; the encoding used by the time module). You can add, subtract and even multiply instances, pickle and copy them and convert the results to strings, COM dates, ticks and some other more esoteric values. In addition, there are several convenient constructors and formatters at hand to greatly simplify dealing with dates and times in real-world applications. In addition to providing an easy-to-use Python interface the package also exports a comfortable C API interface for other extensions to build upon. This is especially interesting for database applications which often have to deal with date/time values (the mxODBC package is one example of an extension using this interface). mxTextTools - Fast Text Processing Tools mxTextTools is an extension package for Python that provides several useful functions and types that implement high-performance text manipulation and searching algorithms in addition to a very flexible and extendable state machine, the Tagging Engine, that allows scanning and processing text based on low-level byte-code "programs" written using Python tuples. It gives you access to the speed of C without the need to do any compile and link steps every time you change the parsing description. Applications include parsing structured text, finding and extracting text (either exact or using translation tables) and recombining strings to form new text. mxStack - Fast and Memory-Efficient Stack Type mxStack is an extension package that provides a new object type called Stack. It works much like what you would expect from such a type, having .push() and .pop() methods and focusses on obtaining maximum speed at low memory costs. mxTools - Collection of Additional Builtins mxTools is an extension package that includes a collection of handy functions and objects giving additional functionality in form of new builtins to the Python programmer. The package auto-installs the new functions and objects as builtins upon first import. This means that they become instantely available to all other modules without any further action on your part. Add the line import NewBuiltins to your site.py script and they will be available to all users at your site as if they were installed in the Python interpreter itself. mxProxy - Generic Proxy Wrapper Type mxProxy is an extension package that provides a new type that is suitable to implement Bastion like features without the need to use restricted execution environments. The type's main features are secure data encapsulation (the hidden objects are not accessible from Python since they are stored in internal C structures), customizable attribute lookup methods and a cleanup protocol that helps in breaking circular references prior to object deletion. The latest version adds a very interesting new feature: weak references which help you work with circular references in a way that doesn't cause memory leakage in a Python system. Note that even though Python 2.1+ has its own weak reference implemetation, this package can be used to write applications which also work on Python 1.5.2 and 2.0. mxBeeBase - On-disk B+Tree Based Database Kit mxBeeBase is a high performance construction kit for disk based indexed databases. It offers components which you can plug together to easily build your own custom mid-sized databases (the current size limit is sizeof(long) which gives you an address range of around 2GB on 32-bit platforms). The two basic building blocks in mxBeeBase are storage and index. Storage is implemented as variable record length data storage with integrated data protection features, automatic data recovery and locking for multi process access. Indexes use a high performance optimized B+Tree implementation built on top of Thomas Niemann's Cookbook B+Tree implementation (http://epaperpress.com/). ________________________________________________________________________ WHERE CAN I GET IT ? The download archives and instructions for installing the packages can be found at: http://www.egenix.com/ ________________________________________________________________________ WHAT DOES IT COST ? The BASE package comes with a Python 2.0 style license, which means that you can use it in both commercial and non-commercial settings without fee or charge. The package comes with full source code. ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Commercial quality support for these packages is available from eGenix.com Software GmbH. Please see http://www.egenix.com/files/python/eGenix-mx-Extensions.html#Support for details about the eGenix support offerings. ________________________________________________________________________ Enjoy, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ From andy@agmweb.ca Tue Sep 24 01:26:09 2002 From: andy@agmweb.ca (Andy McKay) Date: Mon, 23 Sep 2002 17:26:09 -0700 Subject: VanPyZ next meeting: Oct 1st Message-ID: The Vancouver Python and Zope user group is proud to announce its next meeting: * "Plone: Zope's killer app" by Andy McKay A review of Plone 1.0 which is a: "free open source, point-clicky through-the-web, customizable content management system built in Zope with loads of features that can be up and running in five minutes". I'll give a quick demo of Plone, and an overview of the features including changes since some of the earlier releases. This will followed by pointy-clicky beers at the through-the-door drinking establishment. Date: Tuesday, Oct. 1st Time: 7pm Location: ActiveState, 580 Granville, Vancouver, BC (http://www.activestate.com/Contact/) VanPyZ is the Vancouver Python and Zope user group. We meet monthly to discuss Python and Zope. Anyone is welcome to come. Website: http://vanpyz.agmweb.ca Mailing List: http://lists.zpug.org/mailman/listinfo/vanpyz -- Andy McKay www.agmweb.ca -- Andy McKay www.agmweb.ca From carlo_bif@yahoo.com Tue Sep 24 08:30:13 2002 From: carlo_bif@yahoo.com (Carlo Bifulco) Date: 24 Sep 2002 00:30:13 -0700 Subject: PdfSearch-0.2 Message-ID: PdfSearch release 0.2 is out. ----------------------------- This version, thanks to CherryPy (http://www.cherrypy.org), offers an Html interface and Server capabilities. What is PdfSearch? ------------------ PdfSearch is a search engine for archives of PDF files with command-line, GUI and Html interface. Where is PdfSearch? ------------------- The release is on SourceForge: http://sourceforge.net/project/showfiles.php?group_id=53169&release_id=111583 Home Page: http://pdfsearch.sourceforge.net Regards, Carlo Bifulco From duncan-news@grisby.org Tue Sep 24 09:35:04 2002 From: duncan-news@grisby.org (Duncan Grisby) Date: Tue, 24 Sep 2002 08:35:04 GMT Subject: ANN: omniORB 4.0.0 and omniORBpy 2.0 Message-ID: I am pleased to announce the release of omniORB 4.0.0 and omniORBpy 2.0. omniORB is a robust, high performance CORBA ORB for C++. omniORBpy is a version for Python. They are freely available under the terms of the GNU Lesser General Public License (for the libraries), and GNU General Public License (for the tools). For more information, see http://omniorb.sourceforge.net/ Highlights of the new features since omniORB 3.0 and omniORBpy 1: - Updated to CORBA 2.6. - Support for GIOP 1.1 and 1.2. - Wide string and codeset negotiation. - Unix domain and SSL transports. - Bidirectional GIOP. - Flexible thread pool mode. - PortableServer::Current. - Interceptors. - Fixed point. - Complete freeing of all heap allocations. - Efficient in-process calls between C++ and Python. - Python / C++ object reference translation API. - New comprehensive configuration mechanism. - Commercial support. See http://www.omniorb-support.com/ Release notes are available from http://sourceforge.net/project/shownotes.php?release_id=112373 and http://sourceforge.net/project/shownotes.php?release_id=112375 You can download the releases themselves via the release notes pages, or from http://sourceforge.net/project/showfiles.php?group_id=51138 Enjoy! Duncan. -- -- Duncan Grisby -- -- duncan@grisby.org -- -- http://www.grisby.org -- From Peter.Bienstman@rug.ac.be Tue Sep 24 10:52:57 2002 From: Peter.Bienstman@rug.ac.be (Peter Bienstman) Date: Tue, 24 Sep 2002 11:52:57 +0200 Subject: CAMFR 1.0 released Message-ID: =2D----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 We've released CAMFR 1.0, a fast, flexible, friendly full-vectorial Maxwel= l=20 solver. It is written in C++, but uses Python as its interface. Although it can tackle general electromagnetic problems, its main focus is = on=20 CAD applications in the field of photonics, like lasers or nanophotonic=20 devices. =46or more details and downloads, see http://camfr.sourceforge.net. CAMFR is released under the GPL. Peter Bienstman Gent University - Belgium Peter.Bienstman@rug.ac.be =2D----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.7 (GNU/Linux) iD8DBQE9kDX54dgPAIjyquoRAlArAKD++QCE7SZfSmz4Pti1Th7dU2b98QCgqcKW zd4xTfUnml2cPL1lrRN6o4s=3D =3D/a0o =2D----END PGP SIGNATURE----- From michael@stroeder.com Tue Sep 24 16:55:49 2002 From: michael@stroeder.com (=?ISO-8859-1?Q?Michael_Str=F6der?=) Date: Tue, 24 Sep 2002 17:55:49 +0200 Subject: ANN: python-ldap-2.0.0pre06 Message-ID: HI! Find a new pre-release of python-ldap: http://python-ldap.sourceforge.net/ python-ldap provides an object-oriented API to access LDAP directory servers from Python programs. It mainly wraps the OpenLDAP 2.x libs for that purpose. Additionally it contains modules for other LDAP-related stuff (e.g. processing LDIF, LDAPURLs and LDAPv3 schema). Download link: http://prdownloads.sourceforge.net/python-ldap/python-ldap-2.0.0pre06.tar.gz?download Changes since 2.0.0pre05: - Fine-grained locking when linking against libldap_r - New wrapper class ldap.ReconnectLDAPObject - Security fix to module ldapurl - Other fixes and improvements to whole package - LDAPv3 schema support (still somewhat premature and undocumented) Ciao, Michael. From erellon@narod.ru Tue Sep 24 20:36:27 2002 From: erellon@narod.ru (erellon) Date: 24 Sep 2002 12:36:27 -0700 Subject: ANN: PyANT version 0.26 released Message-ID: Project description: PyANT is a build tool with ANT-like makefiles with XML syntax. It based on Jakarta ANT logic and should help you to automate building and testing process for your Python programs (but not only Python programs) Visit http://jakarta.apache.org/ant to know more about ANT and visit http://pyant.sf.net to know more about PyANT Platforms tested: ActiveState Python v2.2 on Win2000 Linux RedHat v7.2 with Python 2.1 FreeBSD v4.6 with Python 2.1 Note: Some tasks like InnoCompile works only on Win32 platform Last changelog: 10.09.2002 Ivan V. Begtin (PyANT v0.26_debug) - added bin/pyantgui.py which require wxPython v2.3, still have bugs but should work. Comments appreciated - Project site reborned here http://pyant.sf.net, summary is here http://www.sf.net/projects/pyant - Some bugs fixed - task added 03.09.2002 Ivan V. Begtin (PyANT v0.25_debug_internal) - Some tasks fixed: Copy, Mail and few others - Added more InnoSetup sections and tasks: InnoUnDeleteTask, InnoUnDeleteSection, InnoTasksSection, InnoAddTask (TODO: Need to implement [Run] section as soon as possible) - fixed setup.py script now It takes version number directly from module "pyant" - added sample custom task in opttask Best regards, Ivan V. Begtin aka Erellon (erellon%narod.ru) From keyton@weissinger.org Wed Sep 25 02:23:25 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Tue, 24 Sep 2002 21:23:25 -0400 Subject: [ANN] Latest Puffin Article on IBM's developerWorks In-Reply-To: Message-ID: IBM has just published the latest article on the Puffin Automation Framework. Check it out: http://www.ibm.com/developerworks This article introduces the new architecture and the future of the system. What is the Puffin Automation Framework? As it's name implies, Puffin allows you to automate "actions." An action, in terms of Puffin, is any "high level" execution item that may require inputs, may produce outputs, and whose results may be validated for success or failure. For example, an action may involve making an HTTP request to a dynamic web page. It may involve grabbing a file's contents or even retrieving a specific email based on a keyword in the subject line. All of these are actions in the sense that they can be automated by Puffin. Puffin will manage all inputs, outputs, and validation for these actions. Puffin Web Page: http://www.puffinhome.org Keyton Weissinger keyton@puffinhome.org From info@wingide.com Wed Sep 25 03:41:10 2002 From: info@wingide.com (Wing IDE Announce) Date: Tue, 24 Sep 2002 22:41:10 -0400 (EDT) Subject: Wing IDE 1.1.6 adds much improved Zope support Message-ID: Hi, Wing IDE version 1.1.6 is now available. Wing IDE is a commercial software development environment for the Python programming language, featuring a powerful source editor, source code browser, networked graphical debugger with interactive debug shell, and project manager. Highlights of this release include: * Much easier to use support for debugging Python code running under Zope 2.4.0 and later. Just drop the WingDBG Zope product into your Zope installation to configure and control Zope debugging from the Zope Management Interface. * Improved and simplified build system for compiling the product sources (which now build also on Solaris and FreeBSD) * Fixed several annoying bugs in source scrolling behaviors during debugging and source browsing * Properly set and propagate PYTHONHOME and other PYTHON* environment variables * Better handling of errors typed in interactive shell and debug probe * Added recent buffer toggle command * Added key pad arrow key support * Several other bug fixes and minor feature enhancements Wing runs on Windows 98 through XP and Intel Linux (2.x kernel, libc6). Mac OS X support is available in beta form (requires XDarwin). Solaris and FreeBSD are now also supported for customers willing to compile the product from source code (requires non-disclosure agreement). Wing IDE is available in both a full-featured Standard edition ($179) and a Lite edition ($35). Wing IDE Lite omits some of the features listed above and is for non-commercial use only. Complete change log: ftp://wingide.com/pub/wingide/1.1.6/CHANGELOG.txt Product info: http://wingide.com/wingide Obtain a demo: http://wingide.com/wingide/demo Download an update: http://wingide.com/downloads Purchase: http://wingide.com/order Enjoy! Sincerely, The Wing IDE Team ------------------------------------------------------------------------ Wing IDE for Python Archaeopteryx Software, Inc www.wingide.com Take Flight! From Dinu Gherman Wed Sep 25 11:48:56 2002 From: Dinu Gherman (Dinu Gherman) Date: Wed, 25 Sep 2002 12:48:56 +0200 Subject: ANN: Python CVS RDF news feeds Message-ID: I'm making available RDF news files with pointers to the latest changes in the Python (and ReportLab) CVS repositories (using ViewCVS on SourceForge): http://me.in-berlin.de/~darwin/cvspysf.rdf (Python, 48 h) http://me.in-berlin.de/~darwin/cvsrlsf.rdf (ReportLab, 72 h) There is also one such file for Stackless Python, but given that there is no ViewCVS for it (yet), the links point some- where into Nirwana: http://me.in-berlin.de/~darwin/cvsstpy.rdf (Stackless, 72 h) All are updated each hour. You can point any GUI tools like SlashDock* (on OS X) to them and save time by forgetting about typing the respective URLs or CVS commands for quickly tracking changes. BTW, another interesting news file is ActiveState's one, which will let you keep an eye on the newest Python recipes in their cookbook website: http://aspn.activestate.com/ASPN/Cookbook/Python/index_rss Regards, Dinu * http://homepage.mac.com/stas/slashdock.html From gurubert-dated-1032624215.ifbmbckh@epigenomics.com Wed Sep 25 13:19:10 2002 From: gurubert-dated-1032624215.ifbmbckh@epigenomics.com (Robert Sander) Date: Wed, 25 Sep 2002 12:19:10 +0000 (UTC) Subject: ANN: Python FAM Message-ID: Hi! I would like to announce release 1.0.1 of Python FAM. http://python-fam.sourceforge.net/ Python FAM is a port (or wrapper module) of libfam from the File Alteration Monitor project at http://oss.sgi.com/projects/fam/. The included test.py does everything test.c++ (the original example) does, so I am quite confident that it works. ;-) This is my first adventure in the large world of extending Python with C modules. Therefore feedback is very appreciated. Greetings -- Robert Sander Manager Information Systems www.epigenomics.com Kastanienallee 24 +493024345330 10435 Berlin From mal@lemburg.com Wed Sep 25 17:10:07 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Wed, 25 Sep 2002 18:10:07 +0200 Subject: ANN: eGenix.com mx EXPERIMENTAL Package 0.7.0 Message-ID: ________________________________________________________________________ ANNOUNCING: eGenix.com mx EXPERIMENTAL Extension Package for Python Version 0.7.0 Experimental Python extensions providing important and useful services for Python programmers. ________________________________________________________________________ WHAT IS IT ?: The eGenix.com mx Experimental Extensions for Python are a collection of alpha and beta quality software tools for Python which will be integrated into the other mx Extension Packages after they have matured to professional quality tools. Python is an object-oriented Open Source programming language which runs on all modern platforms (http://www.python.org/). By integrating ease-of-use, clarity in coding, enterprise application connectivity and rapid application design, Python establishes an ideal programming platform for todays IT challenges. ________________________________________________________________________ WHAT'S NEW ? This release fixes a few minor bugs and solves the distutils problem with mxNumber. It also comes with an updated distutils setup which installs the RPMs into /usr/ rather than /usr/local/. ________________________________________________________________________ EGENIX.COM MX EXPERIMENTAL PACKAGE OVERVIEW: mxNumber - Python Interface to GNU MP Number Types mxNumber provides direct access to the high performance numeric types available in the GNU Multi-Precision Lib (GMP). This library is licensed under the LGPL and runs on practically all Unix platforms. eGenix.com has ported the GMP lib to Windows, to also provide our Windows users with the added benefit of being able to do arbitrary precision calculations. The package currently provide these numerical types: 1. Integer(value) -- arbitrary precision integers much like Python longs only faster 2. Rational(nom,denom) -- rational numbers with Integers as numerator and denominator 3. Float(value[,prec]) -- floating point number with at least prec bits precision 4. FareyRational(value, maxden) -- calculate the best rational represenation n/d of value such that d < maxden mxTidy - Interface to HTML Tidy (HTML/XML cleanup tool) mxTidy provides a Python interface to a thread-safe, library version of the HTML Tidy. command line tool. HTML Tidy helps you to cleanup coding errors in HTML and XML files and produce well-formed HTML, XHTML or XML as output. This allows you to preprocess web-page for inclusion in XML repositories, prepare broken XML files for validation and also makes it possible to write converters from well-known word processing applications such as MS Word to other structured data representations by using XML as intermediate format. mxURL - A URL Datatype mxURL provides a new datatype for storing and manipulating URL values as well as a few helpers related to URL building, encoding and decoding. The main intention of the package is to provide an easy to use, fast and lightwheight datatype for Universal Resource Locators (note the W3C now calls these URIs). mxUID - A UID Datatype mxUID provides a fast mechanism for generating universal identification strings (UIDs). The intent is to make these UIDs unique with high probability in order to serve as object or data set identifiers. A typical use lies in generating session IDs. Other areas where unique IDs play an important role are RPC-implementations, ORBs, etc. ________________________________________________________________________ WHERE CAN I DOWNLOAD IT ? The download archives and instructions for installing the packages can be found at: http://www.egenix.com/ Note that in order to use the eGenix.com mx EXPERIMENTAL package you will first need to install the eGenix.com mx BASE package which can be downloaded from the same location. ________________________________________________________________________ WHAT DOES IT COST ? The EXPERIMENTAL packages uses different licenses in its subpackages. Please refer to the subpackage documentation for details. Some of them may be integrated into the BASE package, others will be integrated into the COMMERCIAL package. The package comes with full source code ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Commercial quality support for these packages is available from eGenix.com. Please see http://www.egenix.com/files/python/eGenix-mx-Extensions.html#Support for details about our support offerings. ________________________________________________________________________ Enjoy, -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.lemburg.com/python/ From fdui@openlight.com Wed Sep 25 17:29:51 2002 From: fdui@openlight.com (fdui@openlight.com) Date: Wed, 25 Sep 2002 12:29:51 -0400 Subject: Flightdeck-UI -- a Cockpit for your Desktop (initial release) Message-ID: The goal of the Flightdeck-UI project is to apply ideas from aircraft instrumentation design to general purpose user interfaces. The project homepage is at "http://www.openlight.com/fdui/". Flightdeck-UI is open source. It is written in Python and requires Tkinter. A whitepaper and the initial code release are available at the project website. The library modules in the current release include two virtual instruments (altimeter-style and VSI-style gauges) and a demonstration program. The demonstration program ("cmdwatch.py") will monitor the output of a Unix command of your choice (you also enter a regex filter and a numerical expression, so that the final result is a number), displaying the quantity and rate of change using two gauges on the screen. A "SHRINK" button puts up a small window with two scaled-down gauges, and hides everything else -- so you can keep it running in a corner of your screen. As a quick experiment, you can run several instances of "cmdwatch.py" to monitor multiple variables. A more comprehensive application -- the Multi-Variable Monitor "mvm.py" is being planned. Some good places to use Flightdeck-UI are operations centers that perform monitoring (typically 24x7), as well as tools for System Administrators who need to keep an eye on multiple machines while concentrating on other work. Questions can be emailed to originating address of this message. Have fun! George From pinard@iro.umontreal.ca Thu Sep 26 15:49:27 2002 From: pinard@iro.umontreal.ca (=?iso-8859-1?q?Fran=E7ois?= Pinard) Date: Thu, 26 Sep 2002 10:49:27 -0400 Subject: HTML page for Pymacs 0.18 Message-ID: Hi! There is now a simple HTML page for Pymacs, which repeats the documentation found in the `README' file of the version 0.18 of the distribution: http://www.iro.umontreal.ca/~pinard/pymacs/ -- François Pinard http://www.iro.umontreal.ca/~pinard From pinard@iro.umontreal.ca Thu Sep 26 16:36:58 2002 From: pinard@iro.umontreal.ca (=?iso-8859-1?q?Fran=E7ois?= Pinard) Date: Thu, 26 Sep 2002 11:36:58 -0400 Subject: RELEASE: Recodec 0.0 Message-ID: Hello to all `recode' pretesters and Python friends. Here is the initial throw for the Recodec program and library. Recodec is the start of a Python prototype for Free Recode. See `Recodec and Free Recode' in the `README' file to know how they relate to one another. The Recodec program and its library, as Free Recode already do, convert files between character sets and usages. They recognise or produce more than 240 different character sets and transliterate files between almost any pair. When exact transliteration are not possible, they get rid of offending characters or fall back on approximations. The `README' is repeated as `http://www.iro.umontreal.ca/~pinard/recodec/', and `http://www.iro.umontreal.ca/~pinard/recodec/Recodec.tar.gz' holds the latest release. This is more a snapshot than a finished release, actually. This is still alpha quality software, which should not be used without caution in a production environment. Pretesters are welcome. Please gently report problems, suggestions or other comments to `mailto:pinard@iro.umontreal.ca'. Recode-related discussions might be held on `mailto:recode-forum@iro.umontreal.ca', this list is opened to its members only. Python specific discussions might go to `mailto:python-list@python.org'. -- François Pinard http://www.iro.umontreal.ca/~pinard From drfransch@netscape.net Fri Sep 27 02:57:15 2002 From: drfransch@netscape.net (F. Schaefer) Date: 26 Sep 2002 18:57:15 -0700 Subject: GetPot 1.0: input file and command line parsing. Message-ID: Finally after one year on sourceforge, the Version 1.0 of the command line and configuration parser GetPot is ready for download. Some new features are: -- the dollar bracket language: A simple lisp-like extension, so that basic string, and arithmetic operations can be performed on the command line and inside a configuration file. -- unidentified flying object detection (UFO detection): sophisticated functions to detect unrecognized arguments, options, flags and variables. -- prefixes: narrow down search space through a 'prefix' (section name). A reviewed user manual documents all these features. Please feel free to download at: http://getpot.sourceforge.net Many people sent me suggestions and improvements, so I think we finally have a pretty useful/stable tool. However, I'm still glad about any comment/critique. Best Regards, Frank. From rjones@ekit-inc.com Fri Sep 27 07:16:30 2002 From: rjones@ekit-inc.com (Richard Jones) Date: Fri, 27 Sep 2002 16:16:30 +1000 Subject: SC-Track Roundup 0.5 pre-release - an issue tracking system Message-ID: =========================================================== SC-Track Roundup 0.5 pre-release - an issue tracking system =========================================================== Note: This is the final pre-release of the newest version of Roundup. It is strongly recommended that you maintain your existing 0.4 installation if you have one, and run 0.5 on a copy of the database. If you are upgrading from 0.4, you must read doc/upgrading.txt! Roundup requires python 2.1.1 for correct operation. Support for dumbdbm requires python 2.1.2 or 2.2. 2.1.3 and 2.2.1 are recommended. This release fixes the following specific problems: - fixes to import/export - password edit now has a confirmation field - cleanups and fixes to the shipped classic template - new backend for sqlite (and it rocks :) - many performance improvements in dbm and sql backends - cgi.client base URL is now obtained from the config TRACKER_WEB (as a result request.url has gone away - there's too much magic in trying to figure what it should be) - cgi-bin script redirects to https now if the request was https - FileClass "content" property wasn't being returned by getprops() in most backends - we now verify instance attributes on instance open and throw a useful error if they're not all there - sf bug 611217 ] menu() has problems when labelprop==None - verify contents of tracker module when the tracker is opened - fixes to value parsing from edit forms - mailgw was missing an "import sys" (!) - setup now installs scripts with python -O flag, doubling performance in some cases (there's a lot of __debug__ use) - added getItem to HTMLClass so you can access arbitrary items in templates - replaced the content() callback ickiness with Page Template macro usage - changed the default CSS style to be less offensive to some ;) - better handling of Page Template compilation errors - sf bug 614188 ] Exception in mailgw.py - sf bug 613310 ] traceback on onexistant items - sf bug 613291 ] typos in nosy list - handle stupid mailers that QUOTE their Re; 'Re: "[issue1] bla blah"' - giving a user a Role that doesn't exist doesn't break stuff any more - revamped user guide, customisation guide, added basic maintenance guide - merged some bugfixes from the Zope Page Templates trunk - added the "minimal" template A lot has been done since 0.4: - new backend for metakit (thanks Gordon McMillan) - new backend for sqlite - new backend for gadfly (it's as done as it's going to get) - further split the dbm backends from the core code, allowing easier non-dict-like backends (eg metakit, RDB) - added Boolean and Number types - fixed the journal bloat - full-text search may also search certain String properties - entire database export and import (incl files) - implemented and used the new access control mechanisms (Permissions, Roles) - switched templating to use Zope's PageTemplates giving much more flexibility - revamped look and feel in web interface including cleaned up CSS usage - re-worked cgi interface to abstract out the explicit "issue" interface - switched to sessions for web authentication - saving of named search queries - updated design document for new access controls - updated customisation document, including more examples - added maintenance guide - better mailgw help message (feature request #558562) - we handle "not found", access and item page render errors better - fixed double-submit by having new-item-submit redirect at end - roundup-server may be a daemon now (fork, logfile, pidfile) - renamed "instance" to "tracker" everywhere, and "node" to "item" in most places - many more bug fixes, cleanups and minor improvements 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.1+ 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 (a classic bug/feature tracker and a minimal skeleton) and six database back-ends (anydbm, bsddb, bsddb3, sqlite, metakit and gadfly). From michels@linmpi.mpg.de Fri Sep 27 09:35:43 2002 From: michels@linmpi.mpg.de (Helmut Michels) Date: Fri, 27 Sep 2002 10:35:43 +0200 Subject: ANN: Data Plotting Library DISLIN 8.0 Message-ID: I am pleased to announce version 8.0 of the data plotting software DISLIN. DISLIN is a high-level and easy to use plotting library for displaying data as curves, bar graphs, pie charts, 3D-colour plots, surfaces, contours and maps. Several output formats are supported such as X11, VGA, PostScript, PDF, CGM, WMF, HPGL, TIFF, PNG and BMP. The software is available for several C, Fortran 77 and Fortran 90 compilers. Plotting extensions for the interpreting languages Perl, Python and Java are also supported for the most operating systems. DISLIN distributions and manuals in PDF, PostScript and HTML format are available from the DISLIN Home Page http://www.dislin.de and via FTP from the server ftp://ftp.gwdg.de/pub/grafik/dislin ------------------- Helmut Michels Max-Planck-Institut fuer Aeronomie Phone: +49 5556 979-334 Max-Planck-Str. 2 Fax : +49 5556 979-240 D-37191 Katlenburg-Lindau Mail : michels@linmpi.mpg.de From uche.ogbuji@fourthought.com Fri Sep 27 18:45:40 2002 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: 27 Sep 2002 11:45:40 -0600 Subject: Article: Introducing PyXML Message-ID: by Uche Ogbuji, September 25, 2002 http://www.xml.com/pub/a/2002/09/25/py.html In this article, I provide a tour of the PyXML package, with liberal code examples. If you haven't already, see also part 1, where I give a synopsis on XML resources for Python users http://www.xml.com/pub/a/2002/09/18/py.html -- Uche Ogbuji Fourthought, Inc. http://uche.ogbuji.net http://4Suite.org http://fourthought.com Apache 2.0 API - http://www-106.ibm.com/developerworks/linux/library/l-apache/ Python&XML column: Tour of Python/XML - http://www.xml.com/pub/a/2002/09/18/py.html Python/Web Services column: xmlrpclib - http://www-106.ibm.com/developerworks/webservices/library/ws-pyth10.html From itamar@itamarst.org Sat Sep 28 02:16:35 2002 From: itamar@itamarst.org (Itamar Shtull-Trauring) Date: Fri, 27 Sep 2002 21:16:35 -0400 Subject: ANN: Twisted 0.99.2 - now with stable internet Message-ID: The Twisted team is proud to announce Twisted 0.99.2, which includes a API-stable version of twisted.internet, Twisted's event-driven networking core (like asyncore, but more so). Twisted's twisted.internet pacakge provides: - event-driven TCP, SSL and unix socket networking - cross-platform (Unix and Win32) support - pluggable reactors, including select(), poll() and Kqueue - event loop GUI integration, for Win32, GTK+, Qt, wxPython and Tkinter - threading integration - scheduling - process running API With the twisted.internet APIs now stable, we feel Twisted provides the best networking platform available today for Python. This also gives us a solid basis for working on stable APIs for the rest of Twisted's packages. Download it now from http://www.twistedmatrix.com, or visit us on IRC on #twisted (irc.freenode.net servers, formerly known as openprojects). What is Twisted? ================ Twisted is an event-based framework for internet applications. It includes a web server, a telnet server, a chat server, a news server, a generic client and server for remote object access, and APIs for creating new protocols and services. Twisted supports integration of the Tk, GTK+, Qt 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 works with Python 2.1 and Python 2.2. Twisted even supports the CVS versions of Python, so it is ready for Python 2.3. Twisted currently supports the following protocols, all implemented in pure python, most of them as both servers and clients: - FTP - HTTP - NNTP - SOCKSv4 (server only) - SMTP - IRC - telnet - POP3 - AOL's instant messaging TOC - OSCAR, used by AOL-IM as well as ICQ (client only) - DNS - MouseMan - finger - Echo, discard, chargen and friends - Twisted Perspective Broker, a remote object protocol - XML-RPC For more information, visit http://www.twistedmatrix.com, or join the list at http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python What's new in 0.99.2 ==================== - Improved HTTP support - bug fixes, caching APIs - WOVEN, a web templating system (formerly known as DOMTemplate) - microdom, a very small DOM implementation - An inetd server written with Twisted (coming soon to a Debian mirror near you) - Switched to epydoc for API docs (http://epydoc.sf.net - it rocks!) - RDBMS storage for the NNTP server, and improved NNTP protocol support - Finalized process-running API - Huge numbers of bug fixes and feature improvements, and better docs From wichert@wiggy.net Sat Sep 28 19:47:24 2002 From: wichert@wiggy.net (Wichert Akkerman) Date: Sat, 28 Sep 2002 20:47:24 +0200 Subject: pyrad 0.1 - RADIUS client Message-ID: pyrad is an implementation of a RADIUS client as described in RFC2138. It takes care of all the details like building RADIUS packets, sending them and decoding responses. Here is an example of doing a authentication request: from pyrad.client import Client from pyrad.dictionary import Dictionary srv=Client("radius.my.domain") srv.secret="radius secret" srv.dict=Dictionary("/etc/radb/dictionary") req=srv.CreatePacket() req.code=pyrad.client.AccessRequest req["User-Name"]="wichert" req["User-Password"]="password" req["NAS-Identifier"]="localhost" reply=srv.SendPacket(req) if reply.code==pyrad.client.AccessAccept: print "access accepted" else: print "access denied" print "Attributes returned by server:" for i in reply.keys(): print "%s: %s" % (i, reply[i]) REQUIREMENTS & INSTALLATION --------------------------- pyrad requires Python 2.0 or later. AUTHOR, COPYRIGHT, AVAILABILITY ------------------------------- pyrad was written by Wichert Akkerman The current version and documentation can be found at its homepage: http://www.wiggy.net/code/pyrad/ Copyright 2002 Wichert Akkerman. All rights reserved. pyrad is distributed under the BSD license. Please see the source archive for the full license text. -- _________________________________________________________________ /wichert@wiggy.net This space intentionally left occupied \ | wichert@deephackmode.org http://www.wiggy.net/ | | 1024D/2FA3BC2D 576E 100B 518D 2F16 36B0 2805 3CB8 9250 2FA3 BC2D | From j-david@noos.fr Sat Sep 28 22:22:34 2002 From: j-david@noos.fr (=?ISO-8859-1?Q?Juan_David_Ib=E1=F1ez_Palomar?=) Date: Sat, 28 Sep 2002 23:22:34 +0200 Subject: flux 0.1 (workflow) Message-ID: Hi all, Flux 0.1.0 is out (first release). Frequently Asked Questions: - What is flux ? It is a python module that provides a framework to create workflows (actually, it is quite abstract, I use it for workflow, maybe it can be used for other things). - How it works ? Wokflows are defined as graphs, with states and transitions. Objects can be associated to workflows. Specific application semantics is is associated to states and transitions. - Why you did it ? Because I was unhappy with the available solutions in Zope, either too constrained, too complex or both. - Which are its strong points ? It is really simple to use, and also the implementation (less than 200 lines, around the half are docstrings). - Which are its weak points ? Well, it is the first release, the API is not stable and the documentation is weak. - Does it provide a graphic or web interface to define the workflow ? No, this is a tool for developers. Of course it could be posible to build a grapic or web interface on top of it. - Where can I get it ? From SorceForge, http://sf.net/projects/lleu - What about the documentation ? The flux.html file describes the API, it has been generated with pydoc from the flux.py docstrings. The test.py file is an example. It remains to do a HOWTO and maybe a document explaining the rationale. Regards, --=20 J. David Ib=E1=F1ez, http://www.j-david.net Software Engineer / Ing=E9nieur Logiciel / Ingeniero de Software From itamar@itamarst.org Mon Sep 30 23:06:33 2002 From: itamar@itamarst.org (Itamar Shtull-Trauring) Date: Mon, 30 Sep 2002 18:06:33 -0400 Subject: ANN: Bannerfish 0.1.1 - banner ad server Message-ID: Apologies if this appears twice, my ISP's NNTP server doesn't seem to like me. Bannerfish banner ad server ============================= This is the first public announcement of Bannerfish, v.0.1.1, a banner ad server for small to medium sized websites. The latest version of Bannerfish should always be available from: http://itamarst.org/software/bannerfish/ Features ---------- - Supports images and Flash - Embeds ads using javascript, so it should work with any web platform - Weighting and multiple ads per page - Lets customers view banner stats (clicks and views) - Automatic deactivation of ads The goal of Bannerfish is to be a small, simple banner ad server sufficient for the needs of small websites. Requirements -------------- Twisted 0.99.2 or later Python 2.2 Bannerfish has been tested under Debian GNU/Linux, but should work fine under other Unix-like systems and on Windows as well. Author and Licensing ---------------------- Bannerfish was written by Itamar Shtull-Trauring (itamar@itamarst-DOT-org). Bannerfish is licensed under the GPL, but licensing under other terms can be arranged - send me an email. -- Itamar Shtull-Trauring http://itamarst.org/ Available for Python, Twisted, Zope and Java consulting