From gtalvola@attbi.com Mon Apr 1 01:00:40 2002 From: gtalvola@attbi.com (Geoffrey Talvola) Date: Sun, 31 Mar 2002 20:00:40 -0500 Subject: Webware for Python 0.7 Message-ID: Webware for Python 0.7 is now available! Webware for Python is a suite of software components for developing object-oriented, web-based applications. The suite uses well known design patterns and includes popular features such as: * A fast, easy-to-use application server * Servlets * Python Server Pages (PSP) * Object-relational mapper * Task scheduler * User manager with authentication * CGI wrapper Key goals of the project include: * Python-oriented. * Object-oriented. * An expansive suite of components and features to cover common needs of web developers. * Modular architecture where components can be used together or independently. * Excellent documentation and numerous examples. * Open source development and community (Python-style license). For more information or to download Webware 0.7 see http://webware.sourceforge.net ------------------------------------------------ Changes since version 0.6.1: Python 2.0 or higher is now required. Components of Webware no longer have independent version numbers. There is just an overall Webware version number. Each component still has an independent status of alpha, beta, etc. New option "gobblewhitespace" in Python Server Pages lets you write if/else and try/except statements in a more natural manner. New option "formatter" in Python Server Pages lets you specify an alternate formatter function to use instead of str(). New feature in MiddleKit: model inheritance. See the user's guide for details. Improvements to the CSV functionality in MiscUtils. WebKit features: - PickleRPC as a more Pythonic alternative to XML-RPC - SessionPrefix setting that can be used with mod_rewrite for easy load balancing with session affinity - improved exception reporting hooks - EmailErrorReportAsAttachment setting can be used to send HTML error pages as attachments - minor bug fixes Major speed improvements in MiddleKit. -- - Geoff Talvola gtalvola@attbi.com From andy@reportlab.com Mon Apr 1 03:28:01 2002 From: andy@reportlab.com (Andy Robinson) Date: Mon, 01 Apr 2002 03:28:01 GMT Subject: The fastest XML parser around Message-ID: ReportLab (www.reportlab.com) are proud to announce the release of pyRXP, the fastest XML parsing toolkit for python, and possibly for any other language anywhere: http://www.reportlab.com/xml/pyrxp.html pyRXP is a wrapper around the excellent RXP parser developed by Richard Tobin at the University of Edinburgh. Our goal is very simple: get an entire XML document into memory, and validated, as quickly and efficiently as possible. You can parse and validate Hamlet in a tenth of a second on a standard PC. pyRXP constructs a tree of tuples in memory with a single API call; the tree is easy to navigate in standard Python code and can be wrapped up with DOM-like 'lazy accessor' nodules. It is standards-compliant and validating, and is at least 30x faster and 6x more memory efficient than the (non-validating) minidom parser in the standard Python distribution. It also comfortably beats the Microsoft and Java (Xerces) parsers in our tests. Enjoy! Andy Robinson CEO/Chief Architect, ReportLab Inc. April 1st 2001 From twisted@itamarst.org Mon Apr 1 10:18:49 2002 From: twisted@itamarst.org (Itamar Shtull-Trauring) Date: Mon, 01 Apr 2002 13:18:49 +0300 Subject: ANN: Twisted 0.16.0 Message-ID: Twisted is an event-based framework for internet applications. For more information, visit: http://www.twistedmatrix.com or join the list at: http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python Twisted joins the fight against Software Piracy =============================================== The main focus of this release is our new licensing scheme. The Business Software Alliance may have put it best, in their page on anti-piracy (http://www.bsa.org/usa/antipiracy/): "Software pirates not only steal from the companies that make the software, but with less money for research and development of new software, all users are hurt. That's why all software piracy - even one copy you make for a friend, is illegal." Software piracy is a serious crime, and one that the Open Source community has been remarkably lax in pursuing and protecting against. This is why Twisted Matrix Laboratories is taking the forefront in Open Source software registration technology. In order to do your part to prevent the tragedy of unregistered, unlicensed software, all you need to do is go to http://www.twistedmatrix.com/license and enter your user information to obtain a license key. You can provide us with as much or as little information as you like! For more information on how Twisted helps you run licensed, unpirated Open-Source software, visit: http://twistedmatrix.com/documents/howto/register What's New in 0.16.0 ==================== - Added Qt event loop support - FTP client protocol support - Reworked coil - a web-based configuration system for Twisted servers - Win32 event loop can now run subprocesses - Automatic log rotation for servers (and USR1 signal for manual rotation) - Improved support for registering shutdown methods - Better XML-RPC integration - Bug fixes, small feature improvements, and more. What is Twisted? ================ Twisted is an event-based framework for internet applications. It includes a web server, a telnet server, a multiplayer RPG engine, a generic client and server for remote object access, and APIs for creating new protocols and services. Twisted supports integration of the Tk, GTK+, 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 currently supports the following protocols, all implemented in pure python, most of them as both servers and clients: - FTP - HTTP - SOCKSv4 - SMTP - IRC - telnet - POP3 - AOL's instant messaging TOC - OSCAR, used by AOL-IM as well as ICQ (client only) - DNS - LDAP (client only) - finger - Echo, discard, chargen and friends - Twisted Perspective Broker For more information, visit http://www.twistedmatrix.com, or join the list at http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python From moshez@twistedmatrix.com Mon Apr 1 11:03:08 2002 From: moshez@twistedmatrix.com (Moshe Zadka) Date: Mon, 01 Apr 2002 05:03:08 -0600 Subject: PMS 0.2.18 -- The April Fool Serious Release Message-ID: I am pleased to announce PMS, Python Mail System, is released in version 0.2.18 PMS is an MUA library written in Python, supporting multiple backends and front ends. It is availbale from http://pythonms.sf.net * Bug fixes, imported from the Debian fixes * Accessing MH folders over ssh supported now. This release is completely serious. There is nothing funny about it. -- Moshe Zadka From boud@valdyas.org Mon Apr 1 21:52:34 2002 From: boud@valdyas.org (Boudewijn Rempt) Date: Mon, 1 Apr 2002 20:52:34 -0100 Subject: Programming with Python and Qt. Message-ID: Well, I'd like to finally officially announce that my book, _GUI Programming with Python using the Qt Toolkit_ is now officially available on paper. Whew! You buy it directly from the publisher's website: http://www.opendocs.org, or, preferably, at your favourite local or on-line bookshop. For instance, Amazon lists it as: http://www.amazon.com/exec/obidos/ASIN/0970033044/qid=1017685892/sr=8-1/ref=sr_8_1_1/103-3219259-3855046 (And I wonder how that's going to come across.) The ISBN is 0-97003300-4-4. Anyway, I've written about 160.000 words of English prose and code, all about Qt, PyQt, sip, Qt Designer and BlackAdder. I cover both Qt 2 and Qt 3 in a lot of detail. All source code to the examples is included on a cd-rom, and Opendocs will shortly open a webforum where I'll post updated code and where people can discuss problems. You can read the book online at: http://www.opendocspublishing.com/pyqt. -- Boudewijn Rempt | http://www.valdyas.org From Jyrki.Alakuijala@iki.fi Mon Apr 1 23:09:39 2002 From: Jyrki.Alakuijala@iki.fi (Jyrki Alakuijala) Date: Tue, 02 Apr 2002 02:09:39 +0300 Subject: pythonchess - Stretching the Python Message-ID: Python is an excellent language for most purposes. However, it is not the language of choice for complex, inhomogeneous computation intensive tasks. Computer chess programming is probably one of the best examples of such tasks. However, I have, together with my friend and colleague Hannu Helminen, coded a GPLed computer chess program in Python/Tkinter. http://www.kolumbus.fi/jyrki.alakuijala/pychess.html best regards, Jyrki Alakuijala From jiba@tuxfamily.org Tue Apr 2 11:21:32 2002 From: jiba@tuxfamily.org (Lamy Jean-Baptiste) Date: Tue, 02 Apr 2002 13:21:32 +0200 Subject: Romance object sharing Message-ID: Hi everyone ! I want to introduce Romance. Romance is an heterogeneous vision of programming / hacking. It relies on a light dynamic object sharing protocol for sharing between different programmic languages and programs (such as desktop applications). In the future Romance will be more than that. It may provide a full library, including even a graphic toolkit ! Romance is a free (GPL'ed) alternative to .NET, CORBA / Bonobo or XML-RPC. It allows to share objects between languages, but keeps the each language's interpreter (contrary to .NET) and look-and-feel (you code Python, not C#). Romance currently support Python, Guile (Scheme) and C. Future versions will support other scripts languages (Perl, Ruby, ...), Lisp / Scheme (ELisp, ...) and other dynamic languages (Smalltalk, OCaml)... Romance is available at : http://oomadness.tuxfamily.org/romance/en/index.html http://savannah.gnu.org/projects/romance The use of Romance in Python is totally transparent. Here is an example of a Romance server : # Step 1: import and init Romance ! import romance # Step 2: create our stuff : the Person factory class Person: def __init__(self, name, proof): self.name = name self.proof = proof def get_description(self): return "%s is a %s." % (self.name, self.proof) # Step 3: make it available to any Romance app as "romance.Person" romance.Person = Person # Step 4: wait for client ! romance.serve_forever() And the corresponding client : # Step 1: import and init Romance ! import romance # Step 2: access to Romance lib and data (and modify them if you want !!!) # Here, create me as a person ! jiba = romance.Person("Jiba", "hacker") print "My name is :", jiba.name print "More precision :", jiba.get_description() print print "Server is in %s" % jiba.__lang__() => My name is : Jiba => More precision : Jiba is a hacker. => => Server is in python The client is in Python too (because comp.lang.python !), but it can be Guile, or whatever "romantic" language ;-) Jiba From lozinski@openstepnews.com Tue Apr 2 17:31:16 2002 From: lozinski@openstepnews.com (Christopher Lozinski) Date: Tue, 02 Apr 2002 09:31:16 -0800 Subject: Python and Zope Banner Exchange News Message-ID: The python and zope Banner exchange has been in operation now for a while at: http://www.pythonandzope.com/BannerInfo Thanks to user feedback, I have now expanded the scope to include open source. So it is now called the "Open Source Banner Exchange." You are invited to submit your banners. I believe that by bringing together disparate open source web sites, this service will provide a much needed marketing boost to the python and zope community. I invite you to join, just email me your banner. Regards Christopher Lozinski 510 795 6086 From ShantelS@ActiveState.com Tue Apr 2 19:12:28 2002 From: ShantelS@ActiveState.com (Shantel Shave) Date: Tue, 2 Apr 2002 11:12:28 -0800 Subject: ActiveState Programming Survey - Win $1000 O'Reilly Bookshelf Message-ID: ActiveState is excited to offer you the chance to share your opinion, and win a $1000 O'Reilly Bookshelf! As open source programmers and users ourselves, we really believe in the power of collaboration. Your feedback is invaluable in helping us to better serve the Python community through our open source projects and product development. Please share your thoughts by completing our online Programming Survey. All respondents have the option of entering a draw to win a $1000 O'Reilly Bookshelf. If you win, you'll be able to customize your prize from all available titles in the O'Reilly catalog, to a total value of $1000! Survey must be completed by April 8, 2002. Draw to be held April 10, 2002. To take the survey, please click here: http://www.ActiveState.com/AS_Programming_Survey Thank you! ActiveState From guido@python.org Wed Apr 3 22:32:52 2002 From: guido@python.org (Guido van Rossum) Date: Wed, 03 Apr 2002 17:32:52 -0500 Subject: ACCEPTED: PEP 285 Message-ID: Here's one final posting of PEP 285. I've read (or at least skimmed) all feedback that was on our news server by 9:30am EST on April 2nd, plus anything mailed directly to me or to python-dev until now. There was a lot of negative feedback, but there was also a lot of support for the PEP. The feedback made it easy to decide on most of the smaller issues in the review section of the PEP as previously posted: even reviewers who were against the PEP mostly supported my preferences for the various details. Despite the negative feedback, I've decided to accept the PEP. The most important perceived problem is that newbies tend to write if x == True: ... where they should write if x: ... I believe this problem should be solved by education (the Zen master hits the student on the head with a stick, and the student gets enlightenment) rather than by holding back what I believe will be a useful feature. You can expect the bool type in Python 2.3; it will be in CVS tonight. --Guido van Rossum (home page: http://www.python.org/~guido/) PEP: 285 Title: Adding a bool type Version: $Revision: 1.20 $ Last-Modified: $Date: 2002/04/03 22:11:05 $ Author: guido@python.org (Guido van Rossum) Status: Accepted Type: Standards Track Created: 8-Mar-2002 Python-Version: 2.3 Post-History: 8-Mar-2002, 30-Mar-2002, 3-Apr-2002 Abstract This PEP proposes the introduction of a new built-in type, bool, with two constants, False and True. The bool type would be a straightforward subtype (in C) of the int type, and the values False and True would behave like 0 and 1 in most respects (for example, False==0 and True==1 would be true) except repr() and str(). All built-in operations that conceptually return a Boolean result will be changed to return False or True instead of 0 or 1; for example, comparisons, the "not" operator, and predicates like isinstance(). Review I've collected enough feedback to last me a lifetime, so I declare the review period officially OVER. I had Chinese food today; my fortune cookie said "Strong and bitter words indicate a weak cause." It reminded me of some of the posts against this PEP... :-) Anyway, here are my BDFL pronouncements. (Executive summary: I'm not changing a thing; all variants are rejected.) 1) Should this PEP be accepted? => Yes. There have been many arguments against the PEP. Many of them were based on misunderstandings. I've tried to clarify some of the most common misunderstandings below in the main text of the PEP. The only issue that weighs at all for me is the tendency of newbies to write "if x == True" where "if x" would suffice. More about that below too. I think this is not a sufficient reason to reject the PEP. 2) Should str(True) return "True" or "1"? "1" might reduce backwards compatibility problems, but looks strange. (repr(True) would always return "True".) => "True". Almost all reviewers agree with this. 3) Should the constants be called 'True' and 'False' (similar to None) or 'true' and 'false' (as in C++, Java and C99)? => True and False. Most reviewers agree that consistency within Python is more important than consistency with other languages. 4) Should we strive to eliminate non-Boolean operations on bools in the future, through suitable warnings, so that for example True+1 would eventually (in Python 3000) be illegal? => No. There's a small but vocal minority that would prefer to see "textbook" bools that don't support arithmetic operations at all, but most reviewers agree with me that bools should always allow arithmetic operations. 5) Should operator.truth(x) return an int or a bool? => bool. Tim Peters believes it should return an int, but almost all other reviewers agree that it should return a bool. My rationale: operator.truth() exists to force a Boolean context on its argument (it calls the C API PyObject_IsTrue()). Whether the outcome is reported as int or bool is secondary; if bool exists there's no reason not to use it. (Under the PEP, operator.truth() now becomes an alias for bool(); that's fine.) 6) Should bool inherit from int? => Yes. In an ideal world, bool might be better implemented as a separate integer type that knows how to perform mixed-mode arithmetic. However, inheriting bool from int eases the implementation enormously (in part since all C code that calls PyInt_Check() will continue to work -- this returns true for subclasses of int). Also, I believe this is right in terms of substitutability: code that requires an int can be fed a bool and it will behave the same as 0 or 1. Code that requires a bool may not work when it is given an int; for example, 3 & 4 is 0, but both 3 and 4 are true when considered as truth values. 7) Should the name 'bool' be changed? => No. Some reviewers have argued for boolean instead of bool, because this would be easier to understand (novices may have heard of Boolean algebra but may not make the connection with bool) or because they hate abbreviations. My take: Python uses abbreviations judiciously (like 'def', 'int', 'dict') and I don't think these are a burden to understanding. To a newbie, it doesn't matter whether it's called a waffle or a bool; it's a new word, and they learn quickly what it means. One reviewer has argued to make the name 'truth'. I find this an unattractive name, and would actually prefer to reserve this term (in documentation) for the more abstract concept of truth values that already exists in Python. For example: "when a container is interpreted as a truth value, an empty container is considered false and a non-empty one is considered true." 8) Should we strive to require that Boolean operations (like "if", "and", "not") have a bool as an argument in the future, so that for example "if []:" would become illegal and would have to be writen as "if bool([]):" ??? => No!!! Some people believe that this is how a language with a textbook Boolean type should behave. Because it was brought up, others have worried that I might agree with this position. Let me make my position on this quite clear. This is not part of the PEP's motivation and I don't intend to make this change. (See also the section "Clarification" below.) Rationale Most languages eventually grow a Boolean type; even C99 (the new and improved C standard, not yet widely adopted) has one. Many programmers apparently feel the need for a Boolean type; most Python documentation contains a bit of an apology for the absence of a Boolean type. I've seen lots of modules that defined constants "False=0" and "True=1" (or similar) at the top and used those. The problem with this is that everybody does it differently. For example, should you use "FALSE", "false", "False", "F" or even "f"? And should false be the value zero or None, or perhaps a truth value of a different type that will print as "true" or "false"? Adding a standard bool type to the language resolves those issues. Some external libraries (like databases and RPC packages) need to be able to distinguish between Boolean and integral values, and while it's usually possible to craft a solution, it would be easier if the language offered a standard Boolean type. This also applies to Jython: some Java classes have separately overloaded methods or constructors for int and boolean arguments. The bool type can be used to select the boolean variant. (The same is apparently the case for some COM interfaces.) The standard bool type can also serve as a way to force a value to be interpreted as a Boolean, which can be used to normalize Boolean values. When a Boolean value needs to be normalized to one of two values, bool(x) is much clearer than "not not x" and much more concise than if x: return 1 else: return 0 Here are some arguments derived from teaching Python. When showing people comparison operators etc. in the interactive shell, I think this is a bit ugly: >>> a = 13 >>> b = 12 >>> a > b 1 >>> If this was: >>> a > b True >>> it would require a millisecond less thinking each time a 0 or 1 was printed. There's also the issue (which I've seen baffling even experienced Pythonistas who had been away from the language for a while) that if you see: >>> cmp(a, b) 1 >>> cmp(a, a) 0 >>> you might be tempted to believe that cmp() also returned a truth value, whereas in reality it can return three different values (-1, 0, 1). If ints were not (normally) used to represent Booleans results, this would stand out much more clearly as something completely different. Specification The following Python code specifies most of the properties of the new type: class bool(int): def __new__(cls, val=0): # This constructor always returns an existing instance if val: return True else: return False def __repr__(self): if self: return "True" else: return "False" __str__ = __repr__ def __and__(self, other): if isinstance(other, bool): return bool(int(self) & int(other)) else: return int.__and__(self, other) __rand__ = __and__ def __or__(self, other): if isinstance(other, bool): return bool(int(self) | int(other)) else: return int.__or__(self, other) __ror__ = __or__ def __xor__(self, other): if isinstance(other, bool): return bool(int(self) ^ int(other)) else: return int.__xor__(self, other) __rxor__ = __xor__ # Bootstrap truth values through sheer willpower False = int.__new__(bool, 0) True = int.__new__(bool, 1) The values False and True will be singletons, like None. Because the type has two values, perhaps these should be called "doubletons"? The real implementation will not allow other instances of bool to be created. True and False will properly round-trip through pickling and marshalling; for example pickle.loads(pickle.dumps(True)) will return True, and so will marshal.loads(marshal.dumps(True)). All built-in operations that are defined to return a Boolean result will be changed to return False or True instead of 0 or 1. In particular, this affects comparisons (<, <=, ==, !=, >, >=, is, is not, in, not in), the unary operator 'not', the built-in functions callable(), hasattr(), isinstance() and issubclass(), the dict method has_key(), the string and unicode methods endswith(), isalnum(), isalpha(), isdigit(), islower(), isspace(), istitle(), isupper(), and startswith(), the unicode methods isdecimal() and isnumeric(), and the 'closed' attribute of file objects. The predicates in the operator module are also changed to return a bool, including operator.truth(). Because bool inherits from int, True+1 is valid and equals 2, and so on. This is important for backwards compatibility: because comparisons and so on currently return integer values, there's no way of telling what uses existing applications make of these values. It is expected that over time, the standard library will be updated to use False and True when appropriate (but not to require a bool argument type where previous an int was allowed). This change should not pose additional problems and is not specified in detail by this PEP. C API The header file "boolobject.h" defines the C API for the bool type. It is included by "Python.h" so there is no need to include it directly. The existing names Py_False and Py_True reference the unique bool objects False and True (previously these referenced static int objects with values 0 and 1, which were not unique amongst int values). A new API, PyObject *PyBool_FromLong(long), takes a C long int argument and returns a new reference to either Py_False (when the argument is zero) or Py_True (when it is nonzero). To check whether an object is a bool, the macro PyBool_Check() can be used. The type of bool instances is PyBoolObject *. The bool type object is available as PyBool_Type. Clarification This PEP does *not* change the fact that almost all object types can be used as truth values. For example, when used in an if statement, an empty list is false and a non-empty one is true; this does not change and there is no plan to ever change this. The only thing that changes is the preferred values to represent truth values when returned or assigned explicitly. Previously, these preferred truth values were 0 and 1; the PEP changes the preferred values to False and True, and changes built-in operations to return these preferred values. Compatibility Because of backwards compatibility, the bool type lacks many properties that some would like to see. For example, arithmetic operations with one or two bool arguments is allowed, treating False as 0 and True as 1. Also, a bool may be used as a sequence index. I don't see this as a problem, and I don't want evolve the language in this direction either. I don't believe that a stricter interpretation of "Booleanness" makes the language any clearer. Another consequence of the compatibility requirement is that the expression "True and 6" has the value 6, and similarly the expression "False or None" has the value None. The "and" and "or" operators are usefully defined to return the first argument that determines the outcome, and this won't change; in particular, they don't force the outcome to be a bool. Of course, if both arguments are bools, the outcome is always a bool. It can also easily be coerced into being a bool by writing for example "bool(x and y)". Resolved Issues (See also the Review section above.) - Because the repr() or str() of a bool value is different from an int value, some code (for example doctest-based unit tests, and possibly database code that relies on things like "%s" % truth) may fail. It is easy to work around this (without explicitly referencing the bool type), and it is expected that this only affects a very small amount of code that can easily be fixed. - Other languages (C99, C++, Java) name the constants "false" and "true", in all lowercase. For Python, I prefer to stick with the example set by the existing built-in constants, which all use CapitalizedWords: None, Ellipsis, NotImplemented (as well as all built-in exceptions). Python's built-in namespace uses all lowercase for functions and types only. - It has been suggested that, in order to satisfy user expectations, for every x that is considered true in a Boolean context, the expression x == True should be true, and likewise if x is considered false, x == False should be true. In particular newbies who have only just learned about Boolean variables are likely to write if x == True: ... instead of the correct form, if x: ... There seem to be strong psychological and linguistic reasons why many people are at first uncomfortable with the latter form, but I believe that the solution should be in education rather than in crippling the language. After all, == is general seen as a transitive operator, meaning that from a==b and b==c we can deduce a==c. But if any comparison to True were to report equality when the other operand was a true value of any type, atrocities like 6==True==7 would hold true, from which one could infer the falsehood 6==7. That's unacceptable. (In addition, it would break backwards compatibility. But even if it didn't, I'd still be against this, for the stated reasons.) Newbies should also be reminded that there's never a reason to write if bool(x): ... since the bool is implicit in the "if". Explicit is *not* better than implicit here, since the added verbiage impairs redability and there's no other interpretation possible. There is, however, sometimes a reason to write b = bool(x) This is useful when it is unattractive to keep a reference to an arbitrary object x, or when normalization is required for some other reason. It is also sometimes appropriate to write i = int(bool(x)) which converts the bool to an int with the value 0 or 1. This conveys the intention to henceforth use the value as an int. Implementation A complete implementation in C has been uploaded to the SourceForge patch manager: http://python.org/sf/528022 This will soon be checked into CVS for python 2.3a0. Copyright This document has been placed in the public domain. Local Variables: mode: indented-text indent-tabs-mode: nil fill-column: 70 End: From vinay_sajip@yahoo.co.uk Wed Apr 3 23:21:41 2002 From: vinay_sajip@yahoo.co.uk (Vinay Sajip) Date: 3 Apr 2002 15:21:41 -0800 Subject: ANN: Logging Module v0.4.1 released Message-ID: A new version of the proposed Python standard logging module (as per PEP 282) has been released. You can get all the information from http://www.red-dove.com/python_logging.html There are "download" and "recent changes" links at the top of that page, and there is quite a lot of new stuff including support for XML, HTTP and SOAP, user-defined logger classes, a ConfigParser-based configuration file format, a Tkinter GUI-based configurator and more! As always, your feedback is most welcome (especially bug reports, patches and suggestions for improvement). Cheers Vinay Sajip Red Dove Consultants Ltd. Changes since the last version: ================================= Bug fix SMTPHandler - extra \r\n needed (Oleg Orlov) Added BufferingHandler, BufferingFormatter Renamed getChainedPriority to getEffectiveLevel Removed Logger.getRoot as it is redundant Added log_test9.py to test Buffering classes and to show an XMLFormatter example. Added setLoggerClass. Added log_test10.py to test setLoggerClass, using an example Logger-derived class which outputs exception info even for DEBUG level logging calls Added log_test11.py to test a buffering implementation of SMTPHandler Changed logging call implementation to allow keyword arguments (Kevin Butler and others) Changed default SysLogHandler implementation. Renamed "additive" to "propagate" as it better describes the attribute. Added HTTPHandler. Modified logrecv.py to remove "both" option and to add "HTTP" and "SOAP" options (SOAP option needs you to have PyXML-0.6.6 and ZSI installed - for logrecv.py only, and not for the core logging module itself). Added log_test12.py to test HTTPHandler. Added log_test13.py to test SOAPHandler. Formatted to Python source guidelines (spaces, indent of 4, within 80 columns). More method renamings (result of feedback) - _handle() renamed to emit(), _logRecord() renamed to handle(). Renamed FATAL to CRITICAL (David Goodger), but left fatal() and FATAL in (until PEP is changed) Changed configuration file format to ConfigParser format. Factored filter application functionality out to a new Filterer class. The isLoggable() method is renamed to filter() in both Filter and Filterer classes. Altered SMTPHandler __init__ to accept (host, port) for the mail internet address. Added GUI configurator which uses Tkinter and the new configuration file format. (See logconf.py and an example configuration file in logconf.ini) Altered log_test3.py to test with the new file format. From ssweeney@idiosync.net Thu Apr 4 00:24:43 2002 From: ssweeney@idiosync.net (Scott Sweeney) Date: Wed, 3 Apr 2002 16:24:43 -0800 Subject: ANN: SLiP and SLIDE - a quick XML shorthand syntax and tool for editing Message-ID: Announcing... SLiP 0.1: a "Sorta Like Python" shorthand syntax for XML SLIDE 0.1: a "Sorta Like an IDE" lightweight windows exe for SLiP editing SLiPpy 0.1: a SLiP package for Python, including a SLiP->XML library (sliplib.py) and source for SLIDE (slide.py) http://www.scottsweeney.com/projects/slip [Description] SLiP is a quick, alternative shorthand syntax for creating and editing XML data by hand and if you know Python, it should also be familiar. Great for taking notes. [Benefits] * Less typing - provides a quicker and easier means for creating or editing XML * Easier to read - creates a pleasant layout for the data with indentation and spacing * Benefits of XML - allow for hierarchical data, unlike tabbed or other character delimited data files * Cheap - provides a free XML editing alternative * Editor-agnostic and Keyboard-oriented - provide a quicker, more hacker-friendly way to create XML over point-and-click alternatives * Works in existing editors - most Python editors (IDLE, Scintilla, etc) should accept and make working with this syntax easy [Example] This portion of SLiP: my:addresses(xmlns:my="http://example.org/my"): #some random comment address(type="home"): street(): "123 Sesame Street" city(): "Wonderland" state(): "CA" zipCode(): "90012" comment(): """ Please leave packages with Grouch in garbage can next door. """ .. would convert to this XML:
123 Sesame Street Wonderland CA 90012 Please leave packages with Grouch in garbage can next door.
I've created some free (MIT license) tools including a Python library for translating between XML and SLiP (SLiPpy), a lightweight editor wrapper (SLIDE), and some brief documentation - all available at the website, http://www.scottsweeney.com/projects/slip This is my first release of these tools so they are a little rough and they need more input, so let me know what you think. Thanks, Scott Sweeney [Contact] ssweeney@idiosync.net

SLiP - a "Sorta Like Python" shorthand for XML (3-Apr-2002). From greg@cosc.canterbury.ac.nz Thu Apr 4 06:52:37 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Thu, 04 Apr 2002 18:52:37 +1200 Subject: ANN: Pyrex - a language for writing Python extension modules Message-ID: Folks here may be interested in my latest project: A new language specially designed for writing Python extension modules. Pyrex is more or less Python with C data types added. You can write functions which freely intermix operations on Python and C data, with all Python reference counting and error checking completely automated. An example Pyrex module is shown below. For more information, see: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ where you can also download version 0.1 and try it out. I'm very keen to get feedback on this, both to find out whether people think it's useful, and to help me debug it! Oh, yeah, here's the example. It finds prime numbers at C speed. def primes(int kmax): cdef int n, k, i cdef int p[1000] result = [] if kmax > 1000: kmax = 1000 k = 0 n = 2 while k < kmax: i = 0 while i < k and n % p[i] <> 0: i = i + 1 if i == k: p[k] = n k = k + 1 result.append(n) n = n + 1 return result -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand To get my email address, please visit my web page: http://www.cosc.canterbury.ac.nz/~greg From barry@zope.com Thu Apr 4 20:36:18 2002 From: barry@zope.com (Barry A. Warsaw) Date: Thu, 4 Apr 2002 15:36:18 -0500 Subject: RELEASED Mailman 2.0.9 Message-ID: I've just released version 2.0.9 of Mailman, the GNU Mailing List Manager. Mailman is released under the GNU General Public License (GPL). Version 2.0.9 fixes a race condition that can cause mail to occasionally be lost, among other useful fixes. I recommend anybody running any version of Mailman 2.0.x to upgrade to 2.0.9, the latest stable release. Details of what's changed are included below. GNU Mailman is software to help manage electronic mail discussion lists. Mailman gives each mailing list a unique web page and allows users to subscribe, unsubscribe, and change their account options over the web. Even the list manager can administer his or her list entirely via the web. Mailman has most of the features that people want in a mailing list management system, including built-in archiving, mail-to-news gateways, spam filters, bounce detection, digest delivery, and so on. Mailman is compatible with most web servers, web browsers, and mail servers. It runs on any Unix-like operating system. Mailman 2.0.9 requires Python 1.5.2 or newer. To install Mailman from source, you will need a C compiler. For more information on Mailman, including links to file downloads, please see the Mailman web page: http://www.gnu.org/software/mailman And its mirrors at: http://mailman.sourceforge.net http://www.list.org Patches and source tarballs are available at http://sourceforge.net/project/showfiles.php?group_id=103 There are email lists (managed by Mailman, of course!) for both Mailman users and developers. See the web sites above for details. Cheers, -Barry 2.0.9 (02-Apr-2002) - Closed a race condition which could, under rare circumstances, cause the occasional message to get lost. - HTML escape message excerpts and headers on the admindb page so JavaScript and other evil tags can't mess up the display. - Some additional Python 2.2 compatibility fixes. - Unlink the footer logos so as not to bug the python.org and gnu.org maintainers as much. :( - Fix a crash in the DSN bounce detection module, which could cause some bounce messages to remain in the queue. - Add the RFC-2822 mandated Date: header on internally generated outgoing messages. Not all MTAs add this field if missing (read: Qmail). From cook@pyzine.com Thu Apr 4 22:48:43 2002 From: cook@pyzine.com (Bryan Richard) Date: 4 Apr 2002 14:48:43 -0800 Subject: [ANN]: Py Launches First Issue Message-ID: El Segundo, CA – 2002 March 04 – Py, an independent technical zine for Python software developers, announced today the launch of its first issue. "I don't have a lot to say as I'm still exhausted from the last-minute, whirlwind editing session and now only have the tedious task of shipping ahead of me. The shakes from the caffeine are making it a bit difficult to focus right now, but I'm very happy with how the first issue turned out," said Bryan Richard, Editor and Publisher. Preorders for the first issue, which started 2002 February 01, topped out at just over 300 copies. Cover price for this landmark publication is $3.00 US and $5.00 Foreign and can be ordered at the website www.PyZine.com. For more information visit the website www.PyZine.com or email cook@pyzine.com. About Py (the zine) It's a zine. About Python. It's not nearly as ambivalent as this release probably makes it sound. About Py (the publishing empire) Py is largely the work of its contributors and Bryan Richard -- who is utterly disenchanted with the whole press release process and its oft-repeated verbiage. Bryan is just some guy from Southern California that wants to spread the good word about Python, drinks way too much coffee, and listens to a lot of indie rock. With the launch of Py he is one step closer to owning Hearst Castle. He can be reached at cook@pyzine.com From mal@lemburg.com Fri Apr 5 12:35:31 2002 From: mal@lemburg.com (M.-A. Lemburg) Date: Fri, 05 Apr 2002 14:35:31 +0200 Subject: ANN: eGenix.com mxCGIPython Version 0.5.0 Message-ID: ________________________________________________________________________ ANNOUNCING: eGenix.com mxCGIPython Version 0.5.0 An easy-to-install one-file Python Interpreter ________________________________________________________________________ WHAT IS IT ?: mxCGIPython is a project to provide a complete ready-to-run Python interpreter in one single executable file. The main intent for supplying such a single file executable is to ease deployment of Python for CGI scripting even when the ISP is not willing or able to install Python for you. The mxCGIPython archive contains everything needed to build the one file interpreter. The web page provides a set of links to contributed binaries for direct use in addition to setup instructions to get the binaries up and running at your ISP. See the documentation page for a list of available binary packages. Binaries for new platforms are always welcome :-) ________________________________________________________________________ WHAT'S NEW ? Version 0.5.0 now supports importing shared modules using the pre-compiled cgipython binary. Since all the already existing binaries don't support this yet, I'm looking for volunteers to send in compiled versions for all the popular platforms (e.g. different Linux distros, FreeBSD, NetBSD, AIX, Sun Cobalt, etc.). ________________________________________________________________________ WHERE CAN I GET IT ? The download archives and instructions for installing the packages can be found at: http://www.egenix.com/files/python/ ________________________________________________________________________ WHAT DOES IT COST ? The packages comes with a Python 2.0 style license, which means that you can use them in both commercial and non-commercial settings without fee or charge. The binaries are covered by the usual Python licenses. ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Free support is available through the eGenix.com User Mailing List which provides a forum for eGenix.com Software Users: http://lists.egenix.com/mailman/listinfo/egenix-users/ 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 seant@iname.com Fri Apr 5 19:05:12 2002 From: seant@iname.com (Sean True) Date: 5 Apr 2002 11:05:12 -0800 Subject: [ANN] JpGraph 1.5.3 Graphs, Charts, Plots ported to Python Message-ID: A Python version of JpGraph, a substantial presentation graphics module written in PHP by Johan Persson. "JpGraph is a fully OO graph library which makes it easy to both draw a "quick and dirty" graph with a minimum of code and quite complex graphs which requires a very fine grain of control. The library tries to assign sensible default values for most parameters hence making the learning curve quite flat since for most of the time very few commands is required to draw graphs with a pleasing aesthetic look." -- Johan Persson Our port of JpGraph depends on gdmodule, and of gd itself. Both are included in the tar file. The port also expects Freetype and appropriate TTF fonts, which are not included. Gantt charts and image maps still need work, but the package in general pretty well. Sample output is available from the download site. Thanks to Johan Persson, Chris Gonnerman, and Thomas Bouttel. Download from http://metagram.webreply.com Sean True Webreply, Inc. From baas@ira.uka.de Fri Apr 5 20:21:30 2002 From: baas@ira.uka.de (Matthias Baas) Date: Fri, 05 Apr 2002 22:21:30 +0200 Subject: ANN: Python Computer Graphics Kit v1.0beta1 Message-ID: I have just released the first beta version of the Python Computer Graphics Kit, a collection of Python modules that contain the basic types and functions required for creating 3D computer graphics images. http://cgkit.sourceforge.net The kit includes several new types such as vectors, matrices and quaternions. It contains a binding for Pixar's RenderMan interface which is a renderer independent API to communicate 3D data to renderers which will finally produce a 2D image. There are already several RenderMan compliant renderers freely available (they are not part of the kit). The kit also includes some of the functionality from the RenderMan Shading Language which enables you to create procedural models or textures from within Python. Even though the kit focuses on RenderMan, the new types or the Shading Language functionality can also be used for other rendering mechanism such as OpenGL or other renderers such as POV-Ray. The kit should run on any platform where Python (and a C/C++ compiler) is available. Windows users can download a binary version for Python 2.1 or Python2.2. For more information, visit: http://cgkit.sourceforge.net - Matthias - From keyton@weissinger.org Sat Apr 6 05:11:21 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Sat, 6 Apr 2002 00:11:21 -0500 Subject: [ANN] Puffin Testing Framework 0.8.5 Release -- Now with Regex Support In-Reply-To: Message-ID: **Announcing the 0.8.5 Release of the Puffin Testing Framework** Puffin allows you to test any web application or service. Once customized to your web application, you can use Puffin to unit test individual web pages, system test your entire web application, or load test your entire site. Now in its third public release, this web application testing framework is even more flexible and robust than before. Have a complex web application that needs to be rigorously tested? Puffin is the answer! Changes for version 0.8.5: 1) Improvement of test plan execution results reporting. The level of detail is now more configurable than before. 2) Introduction of "failed task alerts," which inform you of the details of a failed task in your test plan. 3) Incorporation of Vinay Sajip's logging system to allow for heightened flexibility in the logging of framework events, results reports, and failure alerts. Want your framework logging to occur on the console, the reports to go to a file, but the failed task alerts to go to your email? No problem. Need support for the NT event log or syslog? Child's play. 4) Improvement of text response analyzer (used to determine whether or not a test action returned what you expected). Now called the ExpressionResponseAnalyzer, it now supports regular expressions. 5) Need to extract an output token, but have only HTML coming back from your web application (as opposed to XML, for example)? Now you can use the puffin-core REGEX extractor. Simply configure your test action output with a regular expression and set the extractor type to REGEX and Puffin will take it from there! Please see the updated Puffin User's Guide (in the 'doc' folder) for more details. Keyton Weissinger From austus@adelphia.net Sat Apr 6 18:24:42 2002 From: austus@adelphia.net (Kevin) Date: Sat, 06 Apr 2002 10:24:42 -0800 Subject: Formation of a Python Users' Group in the Los Angeles area. Message-ID: I'm interested in coordinating the formation of a Python Users' Group in the Los Angeles area. Anyone else interested in getting involved, email me describing your level of interest. Thank you. From che@debian.org Mon Apr 8 13:29:21 2002 From: che@debian.org (Ben Gertzfield) Date: Mon, 8 Apr 2002 21:29:21 +0900 Subject: ID3.py Version 1.2 Released! Message-ID: I've released version 1.2 of ID3.py, the simple ID3v1 MP3 tag reader/manipulator class for Python. This version includes an exciting new dictionary-based interface, compatible with the ogg.vorbis class, to read all ID3 tags at once. Also, the default genre when creating an ID3 tag has been changed from 0 ("Blues") to 255 ("Unknown"). ID3.py is hosted by SourceForge. Its home page is: http://id3-py.sourceforge.net/ You can always download the latest release of ID3.py from: http://id3-py.sourceforge.net/id3-py.tar.gz There are already Debian GNU/Linux packages available in the unstable distribution. Happy MP3 hacking! Ben Gertzfield From barry@zope.com Mon Apr 8 15:57:38 2002 From: barry@zope.com (Barry A. Warsaw) Date: Mon, 8 Apr 2002 10:57:38 -0400 Subject: Scheduled maintenance for all mail at python.org & zope.og Message-ID: We plan on doing another upgrade to the mail server mail.python.org, a.k.a. lists.zope.org on Wednesday 10-Apr-2002, at 11am -0400 (EDT, US/Eastern). We will be upgrading to Exim 4, and this will affect all mail and mailing lists on the python.org and zope.org domains. Downtime should be minimal; if all goes well, just 15-30 minutes. You shouldn't even notice it. If you still cannot get email through by noon our time, check the www.python.org home page for status, or email Barry (barry@zope.com), Martijn (mj@zope.com), and Greg (gward@mems-exchange.org). -Postmaster @ {python,zope}.org From barry@zope.com Mon Apr 8 22:43:36 2002 From: barry@zope.com (Barry A. Warsaw) Date: Mon, 8 Apr 2002 17:43:36 -0400 Subject: RELEASED email 2.0 (standalone) Message-ID: I've just released version 2.0 of the standalone email package. This will likely be the last official standalone release, as I intend to complete the merge of the package into the Python 2.3 cvs tree. The email package is a library for managing email messages, including MIME and other RFC 2822-based message documents. It subsumes most of the functionality in several older standard modules such as rfc822, mimetools, multifile, and other non-standard packages such as mimecntl. The email package is compatible with both Python 2.1 and Python 2.2. Online documentation is available at http://www.python.org/doc/current/lib/module-email.html although this does not yet cover the new features in email 2.0. You can download the lastest version from http://sourceforge.net/project/showfiles.php?group_id=25568 Enjoy, -Barry From guido@python.org Tue Apr 9 03:55:40 2002 From: guido@python.org (Guido van Rossum) Date: Mon, 08 Apr 2002 22:55:40 -0400 Subject: RELEASED: Python 2.1.3 Message-ID: Today, April 8th 2002, we've released Python 2.1.3, the latest version of Python 2.1. This is not the latest and greatest release, but is for people who want or need to run Python 2.1. Anthony Baxter was the 2.1.3 releasemeister, for which I thank him profusely. Great job, Anthony! The new release is available here: http://www.python.org/2.1.3/ (Note that we no longer release files via SourceForge -- it's a bit of a hassle, and few people seem to download their files from there.) This release has a small number of critical bug fixes that have come up since 2.1.2 was released, in particular one bug that caused Zope to crash under certain obscure circumstances. What's New in Python 2.1.3? --------------------------- Core - Fixed two bugs reported as SF #535905: under certain conditions, deallocating a deeply nested structure could cause a segfault in the garbage collector, due to interaction with the "trashcan" code; access to the current frame during destruction of a local variable could access a pointer to freed memory. - SF #457466: popenx() argument mangling hangs python (win9x only). Under certain circumstances, using any of the popen calls on win9x would cause python to hang. Library - The xml.sax.expatreader.ExpatParser class will no longer create circular references by using itself as the locator that gets passed to the content handler implementation. [SF bug #535474] - A security hole ("double free") was found in zlib-1.1.3, a popular third party compression library used by some Python modules. The hole was quickly plugged in zlib-1.1.4, and the Windows build of Python now ships with zlib-1.1.4. Windows - The installer now installs Start menu shortcuts under (the local equivalent of) "All Users" when doing an Admin install. - If you do what it takes to compile SSL support for Windows, a bug in httplib.py prevented SSL from working correctly. That bug has been fixed, but note that SSL support on Windows is still not enabled in this release. --Guido van Rossum (home page: http://www.python.org/~guido/) From wesc@deirdre.org Tue Apr 9 19:56:10 2002 From: wesc@deirdre.org (Wesley J. Chun) Date: 9 Apr 2002 11:56:10 -0700 Subject: ANN: BayPIGgies this WED nite 7:30pm Message-ID: What: BayPIGgies meeting When: Wed, 10 Apr 2002, 7:30-9 PM Where: Stanford University, Palo Alto, CA Agenda: Newbies Night Speaker: everyone... Invite everyone you know who may be interested in Python but have questions, would like to learn more about it, or need some advice on an application! These meetings have been very popular in the past, with a good mix of newbies as well as old hands. They are even more fun when one or more Perl experts come around wondering what the big deal is about Python. :-) Come join us for this interactive session! Next Meeting (5/8): Eating Out with Python (our meeting room will not be available, so we will meet and chat over dinner at a local restaurant!) -------------------------------------------------------------------------------- Call For Talks: We are actively seeking speakers for BayPIGgies! If you would like to give a talk at one of our meetings (any Python related topic), contact us to coordinate! for more information including driving and public transit directions: http://deirdre.org/baypiggies -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://deirdre.org/baypiggies wesley.j.chun :: wesc at deirdre.org cyberweb.consulting : henderson, nv : cyberweb at rocketmail.com http://roadkill.com/~wesc/cyberweb/ From mwh@python.org Wed Apr 10 11:47:24 2002 From: mwh@python.org (Michael Hudson) Date: Wed, 10 Apr 2002 11:47:24 +0100 (BST) Subject: RELEASED: Python 2.2.1 Message-ID: We've released a bugfix release of Python, 2.2.1! This release should be fully compatible with Python 2.2. Everyone using 2.2 is recommended to upgrade to 2.2.1. On the 2.2.1 pages http://www.python.org/2.2.1/ you can find more information, binaries for Windows, Redhat 7.2 & 6.2, Mandrake 8.2 and MacOS 8, 9 & X, as well as the usual tarball. Thanks are due to those who provided the binaries and to all who tested the prerelases during the 2.2.1 release process! One nasty bug (that affected Zope in obscure circumstances) and a few less serious ones have been fixed since the second release candidate. Two fixes may be of special interest if you use MacOS X: - This release finally works on Mac OS X multiprocessors - The IDE is now fully functional on Mac OS X. This being a bugfix release, there are no exciting new features -- we just fixed a lot of bugs. For a moderately complete list, please see: http://www.python.org/2.2.1/NEWS.txt Cheers, The Python development team. From barry@zope.com Wed Apr 10 22:05:44 2002 From: barry@zope.com (Barry A. Warsaw) Date: Wed, 10 Apr 2002 17:05:44 -0400 Subject: [mimelib-devel] RELEASED email 2.0 (standalone) References: <15538.3848.65410.460971@anthem.wooz.org> Message-ID: >>>>> "BAW" == Barry A Warsaw writes: BAW> I've just released version 2.0 of the standalone email BAW> package. This will likely be the last official standalone BAW> release, as I intend to complete the merge of the package BAW> into the Python 2.3 cvs tree. Quick followup: I just released version 2.0.1 which fixes a few problems in the test suite. There's also one minor API change that syncs this version with the version that's now in the Python 2.3 cvs tree. It is recommended that you grab the 2.0.1 version, but it's not urgent. -Barry From p.magwene@snet.net Thu Apr 11 05:02:49 2002 From: p.magwene@snet.net (Paul Magwene) Date: Thu, 11 Apr 2002 04:02:49 GMT Subject: ANN: disipyl - a 2D and 3D Python and Jython plotting library Message-ID: DESCRIPTION: ----------- disipyl is an object-oriented wrapper around the DISLIN plotting library. DISLIN is a powerful and flexible multiplatform (Win32, Unix, Linux, etc.) library designed for displaying scientific data. DISLIN's author, Helmut Michels, has made available a DISLIN plotting extension for the Python programming language (see http://www.linmpi.mpg.de/dislin/ for more details). disipyl provides a set of classes which represent various aspects of DISLIN plots, as well as providing some easy to use classes for creating commonly used plot formats (e.g. scatter plots, histograms, 3-D surface plots). A major goal in designing the library was to facilitate interactive data exploration and plot creation. Documentation, a tutorial, and a demo program are included. The library has been tested on Win32, Linux, and FreeBSD, but I anticipate that it should work on any platform which can make use of Python, NumPy, and the DISLIN python extensions. Feedback, comments, and critique are gladly accepted (email: paul.magwene@yale.edu). VERSION: ------- This is release 0.6 of disipyl. CHANGES: ------- New in this release: * support for plot interaction (record plot coordinates via mouse clicks) * new mechanism for quering disipyl objects about the options they support * cleanup of data/option setting mechanisms for disiypl objects * Jython support (when DISLIN java library available - most but not all classes) * updated documentation and tutorial URL: ---- You can find disipyl at: http://pantheon.yale.edu/~pmm34/disipyl.html From greg@cosc.canterbury.ac.nz Thu Apr 11 06:24:37 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Thu, 11 Apr 2002 17:24:37 +1200 Subject: ANN: Pyrex 0.1.1 Message-ID: I have fixed a few bugs in Pyrex and made it available as version 0.1.1: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ While you're there, pick up the latest version of Plex too (1.1.2), which doesn't use yield as a method name any more. Fixes in this version: * Bogus re-use of temp variables shouldn't happen now. * Access to builtin names now works. * Exceptions should work now (in simple cases, anyway). * Conditions in if-statements now evaluated correctly. More bug fixes are in the works. Thanks to all who have provided feedback so far -- keep it coming! -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand To get my email address, please visit my web page: http://www.cosc.canterbury.ac.nz/~greg From greg@cosc.canterbury.ac.nz Thu Apr 11 06:29:15 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Thu, 11 Apr 2002 17:29:15 +1200 Subject: ANN: Plex 1.1.2 Message-ID: I have released a minor update to Plex, a lexical analysis module for Python: http://www.cosc.canterbury.ac.nz/~greg/python/Plex/ The yield() method of the Scanner class has been renamed to produce() for compatibility with Python 2.2 and later. (The old name is still available when running under 2.1 or earlier, or under 2.2 when generators are not being used.) I have also changed one of the tests slightly so that it doesn't get confused by recent changes in the way repr() displays strings containing unprintable characters. -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand To get my email address, please visit my web page: http://www.cosc.canterbury.ac.nz/~greg From vinay_sajip@yahoo.co.uk Thu Apr 11 16:23:30 2002 From: vinay_sajip@yahoo.co.uk (Vinay Sajip) Date: 11 Apr 2002 08:23:30 -0700 Subject: ANN: Logging Module v0.4.2 released Message-ID: A new version of the proposed Python standard logging module (as per PEP 282) has been released. You can get all the information from http://www.red-dove.com/python_logging.html There are "download" and "recent changes" links at the top of that page. The new stuff includes some bug fixes for the Tkinter GUI configurator, one significant performance optimization, a bug in the logging receiver example application, an example showing writing logging records to an RDBMS and changes to the base Filter class to add some useful functionality. As always, your feedback is most welcome (especially bug reports, patches and suggestions for improvement). Cheers Vinay Sajip Red Dove Consultants Ltd. Changes since the last version: ================================= Bug fix fileConfig() - setup of MemoryHandler target and errors when loggers have no handlers set or handlers have no formatters set logconf.py - seems to hang if window closed when combo dropdown is showing - added code to close popup on exit Some tweaks to _srcfile computation (normpath added) findCaller() optimized, now a lot faster! Logger.removeHandler now closes the handler before removing it fileConfig() removes existing handlers before adding the new set, to avoid memory leakage when repeated calls are made Fixed logrecv.py bug which hogged CPU time when TCP connection was closed from the client Added log_test14.py to demonstrate/test a DBHandler which writes logging records into an RDBMS using the Python Database API 2.0 (to run, you need something which supports this already installed - I tested with mxODBC) Made getLogger name argument optional - returns root logger if omitted Altered Filter to take a string initializer, filtering a sub-hierarchy rooted at a particular point (idea from Denis S. Otkidach). Added log_test15.py to test Filter initializer Minor docstring changes From gward@mems-exchange.org Thu Apr 11 17:18:14 2002 From: gward@mems-exchange.org (Greg Ward) Date: Thu, 11 Apr 2002 12:18:14 -0400 Subject: ANNOUNCE: Quixote 0.4.5 released Message-ID: Quixote 0.4.5 is now available for download from: http://www.mems-exchange.org/software/quixote/ Quixote is yet another framework for developing Web applications in Python. The design goals were: 1) To allow easy development of Web applications where the accent is more on complicated programming logic than complicated templating. 2) To make the templating language as similar to Python as possible, in both syntax and semantics. The aim is to make as many of the skills and structural techniques used in writing regular Python code applicable to Web applications built using Quixote. 3) No magic. When it's not obvious what to do in a certain case, Quixote refuses to guess. If you view a web site as a program, and web pages as subroutines, Quixote just might be the tool for you. If you view a web site as a graphic design showcase, and each web page as an individual work of art, Quixote is probably not what you're looking for. Quixote was primarily written by Andrew Kuchling, Neil Schemenauer, and Greg Ward: {amk,nas,gward}@mems-exchange.org. Support for Quixote is available on the quixote-users@mems-exchange.org mailing list. CHANGES in Quixote 0.4.5 ------------------------ * The meaning of the DISPLAY_EXCEPTIONS configuration variable has changed. It's no longer a Boolean, and instead can take three different values: None (or any false value) [default] an "Internal Server Error" page that exposes no information about the traceback 'plain' a plain text page showing the traceback and the request variables 'html' a more elaborate HTML display showing the local variables and a few lines of context for each level of the traceback. (This setting requires the cgitb module that comes with Python 2.2.) (Idea and first version of the patch by David Ascher) * Fixed SessionManager.expire_session() method so it actually works (spotted by Robin Wohler). * Fixed docs so they don't refer to the obsolete URL_PREFIX configuration variable (spotted by Robin Wohler). * Fixed sample Apache rewrite rules in demo.txt and web-server.txt (spotted by Joel Shprentz). * Generate new form tokens when rendering a form rather then when intializing it. This prevents an extra token from being created when processing a valid form (suggested by Robin Wohler). * New method: HTTPRequest.get_accepted_types() returns the MIME content types a client will accept as a dictionary mapping MIME type to the quality factor. (Example: {'text/html':1.0, 'text/plain':0.5, ...}) * Changed escape hatch for XML-RPC handlers; standard input will only be consumed when the HTTP method is POST and the Content-Type is either application/x-www-form-urlencoded or multipart/form-data. * Added quixote.util module to contain various miscellaneous utility functions. Right now, it contains a single function for processing requests as XML-RPC invocations. -- Greg Ward - software developer gward@mems-exchange.org MEMS Exchange http://www.mems-exchange.org From A.M. Kuchling Thu Apr 11 19:43:25 2002 From: A.M. Kuchling (Andrew Kuchling) Date: Thu, 11 Apr 2002 14:43:25 -0400 Subject: Medusa CVS tree now available Message-ID: I've recycled an otherwise-dead SourceForge project named 'oedipus' to provide a CVS tree for Medusa. From now on I'm going to use this project for various small CVS trees of mine that aren't large enough to deserve projects of their own; Medusa is one of them. To do an anonymous checkout, see the instructions at http://sourceforge.net/ cvs/?group_id=4592 . If you want CVS write access, e-mail me your SourceForge ID and I'll add you; you should also subscribe to the oedipus-checkins mailing list to keep abreast of CVS commits by the other developers. --amk (www.amk.ca) Ominous, isn't it? -- The Doctor, in "The Awakening" From gward@python.net Thu Apr 11 20:34:38 2002 From: gward@python.net (Greg Ward) Date: Thu, 11 Apr 2002 15:34:38 -0400 Subject: ANNOUNCE: Optik 1.3 released Message-ID: Optik 1.3 ========= Optik is a powerful, flexible, extensible, easy-to-use command-line parsing library for Python. Using Optik, you can add intelligent, sophisticated handling of command-line options to your scripts with very little overhead. Here's an example of using Optik to add some command-line options to a simple script: from optik import OptionParser [...] parser = OptionParser() parser.add_option("-f", "--file", action="store", type="string", dest="filename", help="write report to FILE", metavar="FILE") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=1, help="don't print status messages to stdout") (options, args) = parser.parse_args() With these few lines of code, users of your script can now do the "usual thing" on the command-line: -f outfile --quiet -qfoutfile --file=outfile -q --quiet --file outfile (All of these result in options.filename == "outfile" options.verbose == 0 ...just as you might expect.) Even niftier, users can run one of -h --help and Optik will print out a brief summary of your script's optons: usage: [options] options: -h, --help show this help message and exit -fFILE, --file=FILE write report to FILE -q, --quiet don't print status messages to stdout That's just a taste of the flexibility Optik gives you in parsing your command-line. See the documentation included in the package for details. AUTHOR, COPYRIGHT, AVAILABILITY ------------------------------- Optik was written by Greg Ward The latest version of Optik can be found at http://optik.sourceforge.net/ Copyright (c) 2001 Gregory P. Ward. All rights reserved. CHANGES IN OPTIK 1.3 -------------------- * Fixed a couple of lurking bugs found by PyChecker. * You can now get away with not supplying an option's type, no matter the action: Optik now assumes a default type of "string". * You can now get away with not supplying an option's destination: Optik now derives a default destination from the first long option, or the first short option if no long options were given. Eg. an option string "--foo-bar" has the default destination 'foo_bar'. * Refactored both Option's and OptionParser's constructors to make life easier for people extending Optik. * Added the "examples/" subdirectory -- this is a repository of examples of extending and using Optik; the goal is to provide canonical implementations of various features that I don't want to add to Optik proper, but that are occasionally requested. (Also, this gives me a good place to test how Optik's extensibility.) * Added support for long and complex option types, mainly for completeness (patch by Matthew Mueller). * Added make_option() as an alias for the Option constructor, because someday there might be many Option classes (in which case make_option() will become a factory function). -- Greg Ward - geek-at-large gward@python.net http://starship.python.net/~gward/ Clarke's Law, redux: Any sufficiently advanced technology is indistiguishable from a rigged demo. From p.magwene@snet.net Thu Apr 11 14:11:17 2002 From: p.magwene@snet.net (Paul Magwene) Date: Thu, 11 Apr 2002 13:11:17 GMT Subject: ANN: disipyl - a 2D and 3D plotting library for Python/Jython Message-ID: DESCRIPTION: ----------- disipyl is an object-oriented wrapper around the DISLIN plotting library. DISLIN is a powerful and flexible multiplatform (Win32, Unix, Linux, etc.) library designed for displaying scientific data. DISLIN's author, Helmut Michels, has made available a DISLIN plotting extension for the Python programming language (see http://www.linmpi.mpg.de/dislin/ for more details). disipyl provides a set of classes which represent various aspects of DISLIN plots, as well as providing some easy to use classes for creating commonly used plot formats (e.g. scatter plots, histograms, 3-D surface plots). A major goal in designing the library was to facilitate interactive data exploration and plot creation. Documentation, a tutorial, and a demo program are included. The library has been tested on Win32, Linux, and FreeBSD, but I anticipate that it should work on any platform which can make use of Python, NumPy, and the DISLIN python extensions. Feedback, comments, and critique are gladly accepted (email: paul.magwene@yale.edu). VERSION: ------- This is release 0.6 of disipyl. CHANGES: ------- New in this release: * support for plot interaction (record plot coordinates via mouse clicks) * new mechanism for quering disipyl objects about the options they support * cleanup of data/option setting mechanisms for disiypl objects * Jython support (when DISLIN java library available - most but not all classes) * updated documentation and tutorial URL: ---- You can find disipyl at: http://pantheon.yale.edu/~pmm34/disipyl.html From boud@valdyas.org Thu Apr 11 22:35:59 2002 From: boud@valdyas.org (Boudewijn Rempt) Date: Thu, 11 Apr 2002 23:35:59 +0200 Subject: Source for GUI Programming with Python Using the Qt Toolkit Message-ID: I've cleaned up the source code for all the examples in the book, and ported it to PyQt 3.1. While awaiting the Opendocs webforum for the book, I've put up the packages on my own webserver. http://www.xs4all.nl/~bsarempt/python/pyqt_qt2.tgz Source for Python 1.x, 2.x, Qt 2.x, 3.x and PyQt 2.x. (Grab this if you use the PyQt that comes with your Linux distribution.) http://www.xs4all.nl/~bsarempt/python/pyqt_qt2.tgz Source for Python 2.x, Qt 3.x and PyQt 3.x. (Grab this if you're current with the PyQt from=20 http://www.riverbankcomputing.co.uk The book can be read online at: http://www.opendocspublishing.com/pyqt Or bought, for instance from Amazon: =20 =20 http://www.amazon.com/exec/obidos/ASIN/0970033044/qid=3D1016980570/sr=3D8= -1/ref=3Dsr_8_1_1/102-2842252-0596931 --=20 Boudewijn Rempt | http://www.valdyas.org From boud@valdyas.org Fri Apr 12 13:42:42 2002 From: boud@valdyas.org (Boudewijn Rempt) Date: Fri, 12 Apr 2002 14:42:42 +0200 Subject: Oops -- wrong url for source with PyQt book Message-ID: The url http://www.xs4all.nl/~bsarempt/python/pyqt_qt2.tgz should be http://www.xs4all.nl/~bsarempt/python/pyqt_qt3.tgz Source for Python 2.x, Qt 3.x and PyQt 3.x. (Grab this if you're current with the PyQt from=20 http://www.riverbankcomputing.co.uk --=20 Boudewijn Rempt | http://www.valdyas.org From gward@mems-exchange.org Fri Apr 12 18:38:07 2002 From: gward@mems-exchange.org (Greg Ward) Date: Fri, 12 Apr 2002 13:38:07 -0400 Subject: ANNOUNCE: Quixote 0.4.6 released Message-ID: Quixote 0.4.6 is now available for download from: http://www.mems-exchange.org/software/quixote/ Quixote is yet another framework for developing Web applications in Python. The design goals were: 1) To allow easy development of Web applications where the accent is more on complicated programming logic than complicated templating. 2) To make the templating language as similar to Python as possible, in both syntax and semantics. The aim is to make as many of the skills and structural techniques used in writing regular Python code applicable to Web applications built using Quixote. 3) No magic. When it's not obvious what to do in a certain case, Quixote refuses to guess. If you view a web site as a program, and web pages as subroutines, Quixote just might be the tool for you. If you view a web site as a graphic design showcase, and each web page as an individual work of art, Quixote is probably not what you're looking for. Quixote was primarily written by Andrew Kuchling, Neil Schemenauer, and Greg Ward: {amk,nas,gward}@mems-exchange.org. Support for Quixote is available on the quixote-users@mems-exchange.org mailing list. CHANGES in Quixote 0.4.6 ------------------------ * a last-minute patch to http_request.py just before release 0.4.5 broke extracting form data from GET requests -- fixed that -- Greg Ward - software developer gward@mems-exchange.org MEMS Exchange http://www.mems-exchange.org From demian0311@yahoo.com Sat Apr 13 03:15:49 2002 From: demian0311@yahoo.com (demian neidetcher) Date: 12 Apr 2002 19:15:49 -0700 Subject: ANN: prysm 1.0 Message-ID: prysm 1.0 http://prysm.sourceforge.net/ https://sourceforge.net/projects/prysm/ prysm is an excruciatingly simple log file colorizer implemented in Python. the itch that i am scratching is log file blindness. there are certain log file events that are of great importance. putting a bunch of characters or newlines in logging doesn't always get your attention and when it's too obnoxious you have to go in and remove it from your regular logging. with prysm you can set up rules to define the color (foreground and background) specific lines will be displayed. it's also a testament to how much python rules... less than 100 lines, including the gpl header! ...sa-weeeet. send questions, comments, etc... to demian0311 at users.sourceforge.net From mmuller@NOSPAM.enduden.com Sat Apr 13 17:44:22 2002 From: mmuller@NOSPAM.enduden.com (Michael Muller) Date: Sat, 13 Apr 2002 16:44:22 +0000 (GMT) Subject: ANN: DOPY 0.6 Released Message-ID: DOPY is a small distributed object system written entirely in Python. It is not intended to be CORBA compliant. Instead, it aims to be extremely easy to use and to support Python's dynamic nature - methods are invoked dynamically, parameters are passed by copy. Any python object that can be pickled can automatically be passed as a parameter or a return value, and any Python object can be published as a distributed object. Changes in DOPY 0.6: - Numerous bug fixes for 0.5. - Added setup.py file for distutils. - Expanded documentation. - Added reactors to deal with alternate input channels in single threaded mode. Available at: http://www.users.cloud9.net/~proteus/dopy/welcome.html From hgg9140@seanet.com Sun Apr 14 00:52:39 2002 From: hgg9140@seanet.com (Harry George) Date: 13 Apr 2002 16:52:39 -0700 Subject: ANN: pdx 1.4.2 Message-ID: Pdx is a POD-style markup language, which outputs html, latex, or docbook. For documentation and tarball, see: http://www.seanet.com/~hgg9140/comp/index.html Bugfix for nested includes with relative path redirections. #CHANGES 2002-04-13: v1.4.2 - Revised Base.do_include_getdata. It was just looking at the last item on the pathstack, thus failing to handle multiple redirections. Now concatenates the full stack. -- Harry George hgg9140@seanet.com From jafo@tummy.com Sun Apr 14 05:57:09 2002 From: jafo@tummy.com (Sean Reifschneider) Date: Sat, 13 Apr 2002 22:57:09 -0600 Subject: RELEASED: Python 2.1.3 In-Reply-To: <200204090255.g392tex17317@pcp742651pcs.reston01.va.comcast.net>; from guido@python.org on Mon, Apr 08, 2002 at 10:55:40PM -0400 References: <200204090255.g392tex17317@pcp742651pcs.reston01.va.comcast.net> Message-ID: On Mon, Apr 08, 2002 at 10:55:40PM -0400, Guido van Rossum wrote: >Today, April 8th 2002, we've released Python 2.1.3, the latest version I have recently put up RPMs for 2.1.3, sources and bnaries compiled against Red Hat 7.2. See: http://www.python.org/2.1.3/rpms.html or ftp://ftp.python.org/pub/python/2.1.3/rpms/ for more information. Sean -- Do bad programmers wake up on Christmas morning to find coal in their sockets? -- Sean Reifschneider Sean Reifschneider, Inimitably Superfluous tummy.com - Linux Consulting since 1995. Qmail, KRUD, Firewalls, Python From vinay_sajip@yahoo.co.uk Sun Apr 14 15:24:26 2002 From: vinay_sajip@yahoo.co.uk (Vinay Sajip) Date: 14 Apr 2002 07:24:26 -0700 Subject: ANN: Logging Module v0.4.3 released Message-ID: A new version of the proposed Python standard logging module (as per PEP 282) has been released. You can get all the information from http://www.red-dove.com/python_logging.html There are "download" and "recent changes" links at the top of that page. The new stuff includes thread-safety additions and the ability to change the logging configuration of an application while it is running! An example is provided in the distribution. As always, your feedback is most welcome (especially bug reports, patches and suggestions for improvement). Cheers Vinay Sajip Red Dove Consultants Ltd. Changes since the last version: ================================= Bug fix one-off error message to go to sys.stderr rather than sys.stdout. logrecv.py fix TCP for busy network. Thread safety - added locking to Handler and for shared data in module, and log_test16.py to test it. Added socket listener to allow on-the-fly configuration and added log_test17.py to test it. From keyton@weissinger.org Sun Apr 14 18:19:37 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Sun, 14 Apr 2002 13:19:37 -0400 Subject: [ANN] Puffin Website Goes Live In-Reply-To: Message-ID: The website for the Puffin web application testing framework is now live! Now you can keep up with the latest developments for the definitive, open-source web application regession testing system! Check it out: http://puffin.sourceforge.net Keyton Weissinger keytonw@users.sourceforge.net From andymac@bullseye.apana.org.au Sun Apr 14 12:57:14 2002 From: andymac@bullseye.apana.org.au (Andrew MacIntyre) Date: Sun, 14 Apr 2002 22:57:14 +1100 (edt) Subject: ANN: port of Python 2.2.1 to OS/2+EMX Message-ID: I have uploaded a port of Python 2.2.1 to the incoming directories of the Hobbes (http://hobbes.nmsu.edu/) software archive. The distributed archives are: python-2.2.1-emx-bin-020414.zip (binary installation package, 3.1MB) python-2.2.1-emx-src-020414.zip (source patches and makefiles, 101kB) The zlib module in the binary package is statically linked against zlib 1.1.4 (the makefile for which is in the source patches archive). While not exhaustively tested, dynamically loadable extension modules (.pyd) built for the 2.2 port should work with this release. More information about the port is available at http://www.andymac.org/python.html, along with the above archives are if you can't find them at Hobbes. OS/2 users enjoy! -- Andrew I MacIntyre "These thoughts are mine alone..." E-mail: andymac@bullseye.apana.org.au | Snail: PO Box 370 andymac@pcug.org.au | Belconnen ACT 2616 Web: http://www.andymac.org/ | Australia From walterm@cmat.edu.uy Mon Apr 15 01:39:05 2002 From: walterm@cmat.edu.uy (Walter Moreira) Date: 14 Apr 2002 17:39:05 -0700 Subject: RPy 0.2 Message-ID: Hello. RPy version 0.2 is released. You can download it from the Sourceforge site: http://rpy.sourceforge.net WHAT IS RPy? RPy is a very simple, yet robust, Python interface to the R Programming Language (http://www.r-project.org). It can manage all kinds of R objects and can execute arbitrary R functions (including the graphic functions). All the errors from the R language are converted to Python exceptions. Any module that later were installed on the R system, can easily be used from within Python, without introducing any changes. Currently it works only on POSIX systems. CHANGES IN RPy 0.2 Fixed bugs o There were several bugs related to memory and R and Python garbage collectors, which caused Python segfaults. o There was a problem with signals traped by R, which made Python crash when was pressed. o R objects of class 'factor' or 'data.frame' were incorrect converted to Python. o Instances of any class converted to R were treated as sequences and made Python segfault. Conversion o RPy has now a new system for conversion of types from R to Python (see the docs), which includes user defined conversion functions. o The conversion to R types is also customizable. o Some utility functions are added. o When Numeric (NumPy) is available, it is used for the standard conversion between R arrays and Python objects. Documentation o The documentation is converted to texinfo format, updated and enlarged. In particular, better documentation for the compilation procedure and for the location of libraries is included. Distribution o There are now some examples included in the distribution. o Regression tests are also included. From jeremy@zope.com Mon Apr 15 21:02:51 2002 From: jeremy@zope.com (Jeremy Hylton) Date: Mon, 15 Apr 2002 16:02:51 -0400 Subject: ZEO 1.0 final release Message-ID: I am happy to announce that ZEO 1.0 final was released today. Zope Enterprise Objects (ZEO) provides the ability for multiple processes to use a single Zope Object Database. ZEO turns the Zope object system in a distributed architecture, allowing multiple processors, machines, and networks to act as one website. For more information and downloads, see the ZEO web page at http://www.zope.org/Products/ZEO. ZEO 1.0 will work with Zope 2.2 or higher and with StandaloneZODB 1.0. The 1.0 release comes after one year of beta testing, which results in several important bug fixes and increased stability. ZEO 1.0 has been used in production environment supporting hundreds of requests per second. See CHANGES.txt for details about bugs fixed. Jeremy From Tony Seward Mon Apr 15 22:05:18 2002 From: Tony Seward (Tony Seward) Date: Mon, 15 Apr 2002 15:05:18 -0600 (MDT) Subject: [ANN] bedevere: The Python wrapper to GNU Prolog Message-ID: bedevere provides a SWIG wrapper to the GNU Prolog compiler. Current emphasis is on Python support. Other languages supported by SWIG will likely be accepted as long as they do not interfere with Python support. This is the initial public release. I would like to see who is interested in using this wrapper and for what purposes. I will then plan a 1.0 release schedule based on the response. It is essentially working now, but with the caveat that some things require gprolog on the path. There are three working examples in this release: 1) A Python rewrite of the top level of the gprolog interpreter. 2) A Python rewrite of the new_main_c.c example from GNU Prolog. 3) A simple Python script that queries a small Prolog database. See the homepage for instructions. Homepage: http://bedevere.sourceforge.net/ Mailing list: http://lists.sourceforge.net/lists/listinfo/bedevere-users SourceForge page: https://sourceforge.net/projects/bedevere/ The GNU Prolog homepage http://gnu-prolog.inria.fr/ ajs From irmen@NOSPAMREMOVETHISxs4all.nl Wed Apr 17 00:18:41 2002 From: irmen@NOSPAMREMOVETHISxs4all.nl (Irmen de Jong) Date: Wed, 17 Apr 2002 01:18:41 +0200 Subject: [ANN] Pyro 2.6 available Message-ID: You can get the latest Pyro version (2.6) at http://pyro.sourceforge.net This is mostly a bug-fix release. Fixed mobile code (agents), documentation enhancements, fixed python-2.2 dependency that had crept in, Event Server clients will now correctly terminate, various other bug fixes. What is Pyro? Pyro is an acronym for PYthon Remote Objects. It is a basic Distributed Object Technology system written entirely in Python. It is extremely easy to implement a distributed system with Pyro, because all network communication code is abstracted and hidden from your application. You just get a remote Python object and invoke methods on the object on the other machine. Pyro offers you a Name Server, an Event Service, mobile objects, remote exceptions, dynamic proxies, remote attribute access, automatic reconnection, a detailed manual, and many examples to get you started right away. Irmen de Jong From itmeedia@itmeedia.ee Wed Apr 17 08:44:13 2002 From: itmeedia@itmeedia.ee (Tanel Tammet) Date: Wed, 17 Apr 2002 10:44:13 +0300 Subject: Python-based Amphora light groupware system 2.0 beta available Message-ID: IT Meedia (www.itmeedia.ee, itmeedia@itmeedia.ee) has made available the 2.0 beta version of the Amphora light groupware system. Amphora light 2.0 is covered by GPL. See http://www.amphora.ee/freeware/ Amphora light is a powerful groupware server for small and medium sized enterprises, based on Linux, Python, Zope, Postgresql and Apache, to name the most important components. The functionality of Amphora light is similar to, and in several respects exceeds MS Exchange and Lotus Notes, providing: - Browser interface for Netscape, Mozilla, MS IE - Simple file (document) sharing capabilities - Calendars - Tasks - Contacts - Discussions - Simple databases - Web-based email - Integrating front page - An optional MS Windows client for synchronisation with MS Outlook - Hierarchical system or rights, management of rights Version 2.0 introduces a number of improvements over the version 1.0 made available last year: - Full source available, licenced under GPL. - Supported on RedHat 7.2 - Based on Zope 2.4.x and new versions of python, postgresql, etc. - Does not require a devoted server machine - Should be much easier to port and install than version 1.0 - Simple file (document) sharing capabilities added - Simple database creation and usage capabilities added - By default, mail is based on sendmail instead of qmail - Numerous improvements to functionality, scalability and stability A devoted Bugzilla site has been made available for bug reports, see http://www.amphora.ee/freeware/amphoralightdevelopment.html IT Meedia is also marketing a professional version of Amphora (see http://www.amphora.ee/eng/), which contains powerful additional components: - Full-fledged document management - CRM (clients, contacts, sales, etc connected to the rest) - Message registration and delegation system - ASP mode Contact: itmeedia@itmeedia.ee www.itmeedia.ee Tanel Tammet From TrentM@ActiveState.com Wed Apr 17 20:22:27 2002 From: TrentM@ActiveState.com (Trent Mick) Date: Wed, 17 Apr 2002 12:22:27 -0700 Subject: ActivePython 2.1.3 and ActivePython 2.2.1 released! Message-ID: We are pleased to announce that versions 2.1.3 and 2.2.1 of ActivePython are now available for download from http://www.ActiveState.com/ActivePython Both of these are bugfix releases and supercede previous ActivePython releases. ActivePython is ActiveState's quality-assured binary build of Python. Builds are currently available for Windows and Linux (Solaris builds are coming soon). In addition to the core, ActivePython features: * expat for XML processing; * zlib for data compression; * Tkinter for Tk development; * a large set of useful Python documentation; and, * on Windows, Mark Hammond's PyWin32 extensions, including the Pythonwin IDE, support for Python ASP, the PythonCOM system. In addition, PyPPM (the Python Package Manager) enables you to easily install a number of other popular Python packages. For example, try this: > pyppm install Numeric to install Numeric Python. Use this command to list all available packages: > pyppm search Please submit email feedback to ActivePython-feedback@ActiveState.com, and file bugs against ActivePython at http://bugs.ActiveState.com/ActivePython. Thanks, and enjoy! Trent -- Trent Mick TrentM@ActiveState.com From akuchlin@mems-exchange.org Thu Apr 18 00:10:35 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Wed, 17 Apr 2002 19:10:35 -0400 Subject: PEP 272: revision 2 Message-ID: For good or ill, here's another revision of PEP 272 making minor changes to address some of the comments made in the previous round of discussion. I have resisted the temptation to increase the PEP's scope by adding padding, or random number generation, or public-key cryptography, because I think those should be separate PEPs. The 'Changes' section reads as follows: 2002-04: Removed references to stream ciphers; retitled PEP; prefixed feedback mode constants with MODE_; removed PGP feedback mode; added CTR and OFB feedback modes; clarified where numbers are measured in bytes and where in bits. Discussion in comp.lang.python, or on the python-crypto list, please. --amk PEP: 272 Title: API for Block Encryption Algorithms Version: $Revision: 1.7 $ Author: A.M. Kuchling Status: Draft Type: Informational Created: 18-Sep-2001 Post-History: 17-Apr-2002 Abstract This document specifies a standard API for secret-key block encryption algorithms such as DES or Rijndael, making it easier to switch between different algorithms and implementations. Introduction Encryption algorithms transform their input data (called plaintext) in some way that is dependent on a variable key, producing ciphertext. The transformation can easily be reversed if and only if one knows the key. The key is a sequence of bits chosen from some very large space of possible keys. There are two classes of encryption algorithms: block ciphers and stream ciphers. Block ciphers encrypt multibyte inputs of a fixed size (frequently 8 or 16 bytes long), and can be operated in various feedback modes. The feedback modes supported in this specification are: Number Constant Description 1 MODE_ECB Electronic Code Book 2 MODE_CBC Cipher Block Chaining 3 MODE_CFB Cipher Feedback 5 MODE_OFB Output Feedback 6 MODE_CTR Counter These modes are to be implemented as described in NIST publication SP 800-38A [1]. Descriptions of the first three feedback modes can also be found in Bruce Schneier's book _Applied Cryptography_ [2]. (The numeric value 4 is reserved for MODE_PGP, a variant of CFB described in RFC 2440: "OpenPGP Message Format" [3]. This mode isn't considered important enough to make it worth requiring it for all block encryption ciphers, though supporting it is a nice extra feature.) In a strict formal sense, stream ciphers encrypt data bit-by-bit; practically, stream ciphers work on a character-by-character basis. This PEP only aims at specifying an interface for block ciphers, though stream ciphers can support the interface described here by fixing 'block_size' to 1. Feedback modes also don't make sense for stream ciphers, so the only reasonable feedback mode would be ECB mode. Specification Encryption modules can add additional functions, methods, and attributes beyond those described in this PEP, but all of the features described in this PEP must be present for a module to claim compliance with it. Secret-key encryption modules should define one function: new(key, mode, [IV], **kwargs) Returns a ciphering object, using the secret key contained in the string 'key', and using the feedback mode 'mode', which must be one of the constants from the table above. If 'mode' is MODE_CBC or MODE_CFB, 'IV' must be provided and must be a string of the same length as the block size. Not providing a value of 'IV' will result in a ValueError exception being raised. Depending on the algorithm, a module may support additional keyword arguments to this function. Some keyword arguments are specified by this PEP, and modules are free to add additional keyword arguments. If a value isn't provided for a given keyword, a secure default value should be used. For example, if an algorithm has a selectable number of rounds between 1 and 16, and 1-round encryption is insecure and 8-round encryption is believed secure, the default value for 'rounds' should be 8 or more. (Module implementors can choose a very slow but secure value, too, such as 16 in this example. This decision is left up to the implementor.) The following table lists keyword arguments defined by this PEP: Keyword Meaning counter Callable object that returns counter blocks (see below; CTR mode only) rounds Number of rounds of encryption to use segment_size Size of data and ciphertext segments, measured in bits (see below; CFB mode only) The Counter feedback mode requires a sequence of input blocks, called counters, that are used to produce the output. When 'mode' is MODE_CTR, the 'counter' keyword argument must be provided, and its value must be a callable object, such as a function or method. Successive calls to this callable object must return a sequence of strings that are of the length 'block_size' and that never repeats. (Appendix B of the NIST publication gives a way to generate such a sequence, but that's beyond the scope of this PEP.) The CFB mode operates on segments of the plaintext and ciphertext that are 'segment_size' bits long. Therefore, when using this mode, the input and output strings must be a multiple of 'segment_size' bits in length. 'segment_size' must be an integer between 1 and block_size*8, inclusive. (The factor of 8 comes from 'block_size' being measured in bytes and not in bits). The default value for this parameter should be block_size*8. Implementors are allowed to constrain 'segment_size' to be a multiple of 8 for simplicity, but they're encouraged to support arbitrary values for generality. Secret-key encryption modules should define two variables: block_size An integer value; the size of the blocks encrypted by this module, measured in bytes. For all feedback modes, the length of strings passed to the encrypt() and decrypt() must be a multiple of the block size. key_size An integer value; the size of the keys required by this module, measured in bytes. If key_size is None, then the algorithm accepts arbitrary-length keys. You cannot pass a key of length 0 (that is, the null string '') as such a variable-length key. Cipher objects should have two attributes: block_size An integer value equal to the size of the blocks encrypted by this object. For algorithms with a variable block size, this value is equal to the block size selected for this object. IV Contains the initial value which will be used to start a cipher feedback mode; it will always be a string exactly one block in length. After encrypting or decrypting a string, this value is updated to reflect the modified feedback text. It is read-only, and cannot be assigned a new value. Cipher objects require the following methods: decrypt(string) Decrypts 'string', using the key-dependent data in the object and with the appropriate feedback mode. The string's length must be an exact multiple of the algorithm's block size or, in CFB mode, of the segment size. Returns a string containing the plaintext. encrypt(string) Encrypts a non-empty string, using the key-dependent data in the object, and with the appropriate feedback mode. The string's length must be an exact multiple of the algorithm's block size or, in CFB mode, of the segment size. Returns a string containing the ciphertext. Here's an example, using a module named 'DES': >>> import DES >>> obj = DES.new('abcdefgh', DES.MODE_ECB) >>> plaintext = "Guido van Rossum is a space alien." >>> len(plaintext) 34 >>> obj.encrypt(plaintext) Traceback (innermost last): File "", line 1, in ? ValueError: Strings for DES must be a multiple of 8 in length >>> ciphertext = obj.encrypt(plain+'XXXXXX') # Add padding >>> ciphertext '\021,\343Nq\214DY\337T\342pA\372\255\311s\210\363,\300j\330\250\312\347\342I\3215w\03561\303dgb/\006' >>> obj.decrypt(ciphertext) 'Guido van Rossum is a space alien.XXXXXX' References [1] NIST publication SP 800-38A, "Recommendation for Block Cipher Modes of Operation" (http://csrc.nist.gov/encryption/modes/) [2] Applied Cryptography [3] RFC2440: "OpenPGP Message Format" (http://rfc2440.x42.com, http://www.faqs.org/rfcs/rfc2440.html) Changes 2002-04: Remove references to stream ciphers; retitled PEP; prefixed feedback mode constants with MODE_; removed PGP feedback mode; added CTR and OFB feedback modes; clarify where numbers are measured in bytes and where in bits. Acknowledgements Thanks to the readers of the python-crypto list for their comments on this PEP. Copyright This document has been placed in the public domain. From barry@zope.com Thu Apr 18 05:35:06 2002 From: barry@zope.com (Barry A. Warsaw) Date: Thu, 18 Apr 2002 00:35:06 -0400 Subject: RELEASED Mailman 2.0.10 Message-ID: I've just released version 2.0.10 of Mailman, the GNU Mailing List Manager. Mailman is released under the GNU General Public License (GPL). Version 2.0.10 fixes a few minor, but mostly harmless, bugs in version 2.0.9. I recommend that you upgrade, but it is not critical. Details of what's changed are included below. GNU Mailman is software to help manage electronic mail discussion lists. Mailman gives each mailing list a unique web page and allows users to subscribe, unsubscribe, and change their account options over the web. Even the list manager can administer his or her list entirely via the web. Mailman has most of the features that people want in a mailing list management system, including built-in archiving, mail-to-news gateways, spam filters, bounce detection, digest delivery, and so on. Mailman is compatible with most web servers, web browsers, and mail servers. It runs on any Unix-like operating system. Mailman 2.0.10 requires Python 1.5.2 or newer. To install Mailman from source, you will need a C compiler. For more information on Mailman, including links to file downloads, please see the Mailman web page: http://www.gnu.org/software/mailman And its mirrors at: http://mailman.sourceforge.net http://www.list.org Patches and source tarballs are available at http://sourceforge.net/project/showfiles.php?group_id=103 There are email lists (managed by Mailman, of course!) for both Mailman users and developers. See the web sites above for details. Cheers, -Barry 2.0.10 (09-Apr-2002) - Closed another small race condition. - Add the RFC-2822 recommended Message-ID: header on internally generated outgoing messages. Not all MTAs add this field if missing (read: Qmail). From nas@mems-exchange.org Thu Apr 18 19:46:50 2002 From: nas@mems-exchange.org (Neil Schemenauer) Date: Thu, 18 Apr 2002 14:46:50 -0400 Subject: ANNOUNCE: Quixote 0.4.7 released Message-ID: Quixote 0.4.7 is now available for download from: http://www.mems-exchange.org/software/quixote/ Quixote is yet another framework for developing Web applications in Python. CHANGES in Quixote 0.4.7 ------------------------ * Move ACCESS_TIME_RESOLUTION to SessionManager class. This was another embarrassing bug introduced in 0.4.5. * In http_request.py, make the test that prevents stdin from being consumed less restrictive (e.g. for PUT methods). * Add some simple test code. -- Neil Schemenauer | MEMS Exchange Software Engineer | http://www.mems-exchange.org/ From altis@semi-retired.com Fri Apr 19 03:37:17 2002 From: altis@semi-retired.com (Kevin Altis) Date: Thu, 18 Apr 2002 19:37:17 -0700 Subject: [ANN] PythonCard 0.6.5 Message-ID: This release includes installation instructions and walkthroughs to get you started with PythonCard, distutils support, and the layout editor (resourceEditor sample) has been enhanced to edit dialogs. New components in 0.6.5: Gauge, StaticBox, ComboBox, Spinner, RightTextField, and Calendar All the information you need about PythonCard can be found on the project web page at: http://pythoncard.sourceforge.net/ The installation instructions and walkthroughs are available on the main documentation page: http://pythoncard.sourceforge.net/documentation.html You can download the latest release at: http://sourceforge.net/project/showfiles.php?group_id=19015 For a list of some of the samples that have been built with PythonCard and screenshots of them in action go to: http://pythoncard.sourceforge.net/samples.html A description of each sample is included in the readme.txt file in each sample directory. The kind people at SourceForge host the project: http://sourceforge.net/projects/pythoncard/ If you want to get involved the main contact point is the Mailing list: http://lists.sourceforge.net/lists/listinfo/pythoncard-users PythonCard requires Python 2.1.x or later and wxPython 2.3.2.1 or later and runs on every platform those are available for. wxPython can be downloaded at http://www.wxpython.org/ ka --- Kevin Altis altis@semi-retired.com From theller@python.net Fri Apr 19 16:10:55 2002 From: theller@python.net (Thomas Heller) Date: Fri, 19 Apr 2002 17:10:55 +0200 Subject: ANN: The Python Manual Index Message-ID: Hi, folks. A new Python-powered search engine is online at http://starship.python.net/crew/theller/pyhelp.cgi It searches for keywords in the Python manuals at http://www.python.org/doc/. The script can also be downloaded, and can be configured to search HTML manual pages installed locally. The keyword index is build on the fly. It can also (probably) be easily integrated in your editor/ide to provide context sensitive help. Mark Hammond has integrated an interface to this keyword search in his cool Mozilla/Netscape sidebar he recently announced: http://starship.python.net/crew/mhammond/mozilla Regards, Thomas From akuchlin@mems-exchange.org Fri Apr 19 22:24:38 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: Fri, 19 Apr 2002 17:24:38 -0400 Subject: Developer's Guide pages on www.python.org Message-ID: A new section, the Python Developer's Guide, has been added at http://www.python.org/dev/ to explain how to help with Python's development. The pages also link to various developer-related resources such as the Developer FAQ, the index of PEPs, daily snapshots of the CVS tree, and other useful things. If you've been wondering "how can I contribute to Python?", I hope these pages can help get you started. --amk (www.amk.ca) The concept is simply staggering. Pointless, but staggering. -- The Doctor, in "The Pirate Planet" From twisted@itamarst.org Sat Apr 20 15:09:47 2002 From: twisted@itamarst.org (Itamar Shtull-Trauring) Date: Sat, 20 Apr 2002 16:09:47 +0200 Subject: ANN: Twisted 0.17.4 Message-ID: Twisted is an event-based framework for internet applications, written in Python and licensed under the LGPL. 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 since 0.16.0 ======================= - NNTP support and a framework for news servers. - HTTP/1.1 now supports persistent connections and pipelining, for improved performance. - Many feature enhancements for the web framework. - Added component architecture inspired by Zope3. - Many bug fixes and feature enhancements. 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 currently supports the following protocols, all implemented in pure python, most of them as both servers and clients: - NNTP - FTP - HTTP - SOCKSv4 - SMTP - IRC - telnet - POP3 - AOL's instant messaging TOC - OSCAR, used by AOL-IM as well as ICQ (client only) - DNS - LDAP (client only) - finger - Echo, discard, chargen and friends - Twisted Perspective Broker For more information, visit http://www.twistedmatrix.com, or join the list at http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python From sanner@scripps.edu Sun Apr 21 02:24:42 2002 From: sanner@scripps.edu (Michel F. SANNER) Date: Sun, 21 Apr 2002 01:24:42 GMT Subject: PMV, ADT and ViPEr release Message-ID: We are happy to announce the release 1.1alpha of PMV, ADT and ViPER. PMV is a Python-based molecular visualization and manipulation program ADT is a graphical front end to the automated docking program AutoDock ViPEr is a visual programming environment for Python. These 3 programs are all built on top a several python packages such as DejaVu, a general purpose 3D geometry visualization package, MolKit a component to deal with molecules etc ... We apologize for the long delay in puting ViPEr online after its presentation at the last Python conference. Since it shares many components with previously released tools (PMV and ADT) we had to update all the tools before releasing ViPEr. I hope the fun you'll have with ViPEr will make up for the waiting :) Download at: http://www.scripps.edu/~sanner/python/packager.html All of our programs and components are free for non commercial use. Only a small subset of the components require a license for commercial use. You can either download the complete release which contains: - a python interpreter version 1.5.2 - python packages developped in the MGL lab (platform dependent and independent) - Third party python packages (platform dependent and independent) - Applications : PMV, ADT and ViPEr. Or only the packages which contains: - python packages developped in the MGL lab (platform dependent and independent) - Third party python packages (platform dependent and independent) - Applications : PMV, ADT and ViPEr. The download "A la carte" is of course still available for the most advanced users. You can find more information on our web site : http://www.scripps.edu/~sanner/python/index.html Two mailing lists have been created pmv and pmvdev (see README.html file once you downloaded and installed our packages). For any question concerning : - the installation or PMV please contact Sophie COON (sophiec@scripps.edu) - ADT please contact Ruth Huey (rhuey@scripps.edu) - ViPEr please contact Michel Sanner (sanner@scripps.edu) Have Fun ! Ruth Huey, Sophie Coon, Daniel Stoffler and Michel Sanner From djc@object-craft.com.au Sun Apr 21 15:49:20 2002 From: djc@object-craft.com.au (Dave Cole) Date: 22 Apr 2002 00:49:20 +1000 Subject: Sybase module 0.35pre1 released In-Reply-To: References: Message-ID: What is it: The Sybase module provides a Python interface to the Sybase relational database system. It supports all of the Python Database API, version 2.0 with extensions. Notes: In this release the module uses callback instead of inline error handling from the Sybase CT library. This has caused quite extensive changes to the threading support inside the low level extension module. One of the nice side effects of using callback error handling is that server errors while executing stored procedures will now be reported correctly. FreeTDS support is much improved in this version. You will still experience segfaults while using FreeTDS though. These issues are still being worked on. For the adventurous, you can build for FreeTDS like this: python setup.py build_ext -D HAVE_FREETDS -U WANT_BULKCOPY python setup.py install The module is available here: http://www.object-craft.com.au/projects/sybase/sybase-0.35pre1.tar.gz The module home page is here: http://www.object-craft.com.au/projects/sybase/ - Dave -- http://www.object-craft.com.au From baas@ira.uka.de Sun Apr 21 17:02:39 2002 From: baas@ira.uka.de (Matthias Baas) Date: Sun, 21 Apr 2002 18:02:39 +0200 Subject: ANN: Python Computer Graphics Kit v1.0beta2 Message-ID: The second beta release of the Python Computer Graphics Kit is available at http://cgkit.sourceforge.net What is it? ----------- The kit is a collection of Python modules that contain the basic types and functions required for creating 3D computer graphics images. The kit includes several new types such as vectors, matrices and quaternions. It contains a binding for Pixar's RenderMan interface which is a renderer independent API to communicate 3D data to renderers which will finally produce a 2D image. There are already several RenderMan compliant renderers freely available (they are not part of the kit). The kit also includes some of the functionality from the RenderMan Shading Language which enables you to create procedural models or textures from within Python. Even though the kit focuses on RenderMan, the new types or the Shading Language functionality can also be used for other rendering mechanism such as OpenGL or other renderers such as POV-Ray. The kit should run on any platform where Python (and a C/C++ compiler) is available. Windows users can download a binary version for Python 2.1 or Python2.2. What's new? ----------- The noise module is far more complete than before. In addition to the normal noise function there's a periodic noise function and a cellnoise function which is constant between integer points. All functions also have a vector version that return a vector instead of a single float. There has also been a small bugfix in the RenderMan binding concerning CSG, and a few other minor modifications (see the changelog). The kit should also compile under Linux now (the noise module couldn't be imported in the previous version). For more information, visit: http://cgkit.sourceforge.net - Matthias - From akuchlin@mems-exchange.org Tue Apr 23 00:54:19 2002 From: akuchlin@mems-exchange.org (Andrew Kuchling) Date: 22 Apr 2002 23:54:19 -0000 Subject: Python Cryptograph Toolkit 1.9alpha1 Message-ID: I've wrapped up a new, alpha-quality, release of the Python Cryptography Toolkit. It's not backward-compatible with earlier releases, in an effort to fix the design errors I've made in the past. Dodgy algorithms have been dropped, and one new one, AES, has been added. The public-key code is also gone. A list of the changes in this version: * Added Crypto.Cipher.AES. * Added the CTR mode and the variable-sized CFB mode from the NIST standard on feedback modes. * Removed Diamond, HAVAL, MD5, Sapphire, SHA, and Skipjack. MD5 and SHA are included with Python; the others are all of marginal usefulness in the real world. * Renamed the module-level constants ECB, CFB, &c., to MODE_ECB, MODE_CFB, as part of making the block encryption modules compliant with PEP 272. (I'm not sure about this change; if enough users complain about it, I might back it out.) * Made the hashing modules compliant with PEP 247 (not backward compatible -- the major changes are that the constructor is now MD2.new and not MD2.MD2, and the size of the digest is now given as 'digest_size', not 'digestsize'. * The Crypto.PublicKey package is no longer installed; the interfaces are all wrong, and I have no idea what the right interfaces should be. See the TODO file for a list of other fixes I'd like to make before finalizing this as version 2.0. CVS is available through the pycrypto project on SourceForge. The source code is available at http://www.amk.ca/files/python/pycrypto-1.9a1.tar.gz . -- A.M. Kuchling http://www.amk.ca run-time. n. (QA testing) the moment when the programmer shouts "Must run!" and disappears. -- Stan Kelly-Bootle, _The Computer Contradictionary_ From cook@pyzine.com Tue Apr 23 07:57:14 2002 From: cook@pyzine.com (Bryan Richard) Date: 22 Apr 2002 23:57:14 -0700 Subject: [ANN] Py Subscriptions Message-ID: El Segundo, CA - 2002 April 23 - Py Parlour Press announced today that subscriptions for Py, an independent print zine for Python developers, were now available. "The idea of being shackled to this zine for the next year of my life apparently appeals to some deep masochistic subconscious yearning I am unaware of in my waking hours" said Bryan Richard, editor and publisher. The cost for a Domestic subscription is US$10.00 and US$15.00 for all orders outside the United States. A single subscription is for four (4) issues of Py. "Subscriptions were by far the most frequent request received, right after a media type that didn't disintegrate when exposed to sunlight." Pythonistas can subscribe online at www.PyZine.com. In other news, PyZine.com just went through a massive facelift, making it an almost usable website. A couple of new features were added (the Py-O-Meter which carries a running total of zines sold) and the FAQ was given a serious throttling. About Py It's a print zine. About Python. Get hip to that. About Py Parlour Press (the multinational media conglomerate) Py Parlour Press is a guy named Bryan Richard and the saints that contribute articles (who spare you, the reader, from Bryan's writing). Bryan is a book nerd, drives a beat blue Volvo, and listens to way too much Songs:Ohia, which contains way too many E minor chords. With the addition of subscriptions Bryan should be ensconced in Hearst Castle before the year is out. From davidma@eskimo.com Tue Apr 23 08:48:08 2002 From: davidma@eskimo.com (David Margrave) Date: Tue, 23 Apr 2002 00:48:08 -0700 Subject: [Module] pylibpcap-0.3 Message-ID: pylibpcap-0.3 ------------- Python Module for libpcap packet capture library This is a new release incorporating bug fixes and enhancements contributed by pylibpcap users. Pylibpcap now uses distutils. Thanks to all those who contributed (PC Drew, Gustavo Carneiro, and Jon Nelson)! URL: http://pylibpcap.sourceforge.net License: BSD Style Platform: Unix Requires: libpcap Binaries: RH 7.2 i386 RPM Categories: Networking David Margrave (davidma@eskimo.com) -- pylibpcap-0.3 -- Python Module for libpcap packet capture library. From matt@zope.com Tue Apr 23 18:05:12 2002 From: matt@zope.com (Matthew T. Kromer) Date: Tue, 23 Apr 2002 13:05:12 -0400 Subject: Zope 2.4.4 Available Message-ID: Zope 2.4.4 has been released - you can download it from Zope.org: http://www.zope.org/Products/Zope/2.4.4/ The binary releases for Zope 2.4.4 contain the Python 2.1.3 final release. Users of the Zope source release should note that Python 2.1.3 is now the required platform. Python 2.1.3 includes a fix to an issue that could cause crashes in Zope. The Linux binary is linked against RedHat 5.2 libraries; users of more recent distributions are encouraged to install the source release instead of the binary release of Zope. Particular features of interest in Zope 2.4.4: * Fixed a crashing bug which affected sites making heavy use of DTML or Python scripts (Python 2.1.3 fixes this). * Miscellaneous bugfixes (see the changelog), including collector issues 185, 236, 254, 275, 278, 319, 341 and 343. For more information on what is new in this release, see the CHANGES.txt and HISTORY.txt files for the release: * http://www.zope.org/Products/Zope/2.4.4/CHANGES.txt * http://www.zope.org/Products/Zope/2.4.4/HISTORY.txt For more information on the available Zope releases, guidance for selecting the right distribution and installation instructions, please see: http://www.zope.org/Documentation/Misc/InstallingZope.html -- Matt Kromer Zope Corporation http://www.zope.com/ From matt@zope.com Tue Apr 23 18:06:01 2002 From: matt@zope.com (Matthew T. Kromer) Date: Tue, 23 Apr 2002 13:06:01 -0400 Subject: Zope 2.5.1 Available Message-ID: Zope 2.5.1 has been released - you can download it from Zope.org: http://www.zope.org/Products/Zope/2.5.1/ The binary releases for Zope 2.5.1 contain the Python 2.1.3 final release. Users of the Zope source release should note that Python 2.1.3 is now the required platform. Python 2.1.3 includes a fix to an issue that could cause crashes in Zope. The Linux binary is linked against RedHat 5.2 libraries; users of more recent distributions are encouraged to install the source release instead of the binary release of Zope. Particular features of interest in Zope 2.5.1: * Fixed a crashing bug which affected sites making heavy use of DTML or Python scripts (Python 2.1.3 fixes this). * Miscellaneous bugfixes (see the changelog), including collector issues 17, 33, 166, 167, 185, 207, 210, 227, 236, 250, 254, 259, 275, 278, 303, 319, 325, 341, 343 For more information on what is new in this release, see the CHANGES.txt and HISTORY.txt files for the release: * http://www.zope.org/Products/Zope/2.5.1/CHANGES.txt * http://www.zope.org/Products/Zope/2.5.1/HISTORY.txt For more information on the available Zope releases, guidance for selecting the right distribution and installation instructions, please see: http://www.zope.org/Documentation/Misc/InstallingZope.html -- Matt Kromer Zope Corporation http://www.zope.com/ From jjl@pobox.com Tue Apr 23 18:35:19 2002 From: jjl@pobox.com (John J. Lee) Date: Tue, 23 Apr 2002 18:35:19 +0100 Subject: [ANN] ClientCookie: HTTP cookie handling on client end Message-ID: ClientCookie 0.02a http://wwwsearch.sourceforge.net/README-ClientCookie http://wwwsearch.sourceforge.net/ClientCookie-0.02a.tar.gz or http://wwwsearch.sourceforge.net/ClientCookie-002a.zip WARNING: this is an alpha release: interfaces may change (probably not, though). Since this is a port rather than completely new code though, it does actually seem to work quite well! Also note that redirects are not handled correctly yet when used with the extended urllib2 callables (urlopen, HTTPHandler, etc): they'll probably accept and send cookies when they shouldn't in some cases. This is a Python port of Gisle Aas' HTTP::Cookies Perl module from the libwww-perl web client library. The purpose of this Python package is to allow the easy extraction of HTTP cookies from "Set-Cookie" and "Set-Cookie2" (RFC 2965) headers, and generation of "Cookie" and "Cookie2" headers appropriate for a particular HTTP request. Incoming cookies are checked for acceptability based on the host name, etc. Cookies are only set on outgoing requests if they match the request's host name, path, etc. Python 2.0 or above is required (though I may fix it to work with 1.52 eventually), and urllib2 is recommended. Note that the version of urllib2.py from Python 2.0 is too old: you need the version from Python 2.1 (available from the source distribution or CVS from http://www.python.org), which itself depends on inspect.py -- just copy them into your Python search path. import ClientCookie import urllib2 request = urllib2.Request("http://www.acme.com/") # note we're using the urlopen from ClientCookie, not urllib2 result = ClientCookie.urlopen(request) # let's say this next request requires a cookie that was set in result request2 = urllib2.Request("http://www.acme.com/flying_machines.html") result2 = ClientCookie.urlopen(request) (lower-level usage is also possible) Distrubuted under the Perl Artistic License. John J. Lee April 2002 From brian@zope.com Wed Apr 24 14:24:59 2002 From: brian@zope.com (Brian Lloyd) Date: Wed, 24 Apr 2002 09:24:59 -0400 Subject: ANNOUNCE: Career opportunites at Zope Corporation Message-ID: Zope Corporation is seeking an experienced and highly motivated Software Engineer to deliver cutting-edge Zope solutions for external and internal customers. More information is available at: http://www.zope.com/Corporate/CareerOpportunities We are also seeking an experienced Project Manager / Technical Lead to manage project delivery to internal and external customers. Information on this position is also available at: http://www.zope.com/Corporate/CareerOpportunities Brian Lloyd brian@zope.com V.P. Engineering 540.361.1716 Zope Corporation http://www.zope.com From tismer@tismer.com Wed Apr 24 16:34:22 2002 From: tismer@tismer.com (Christian Tismer) Date: Wed, 24 Apr 2002 17:34:22 +0200 Subject: Stackless goes Limbo Message-ID: Hi all, after some time of consideration, I have decided to move the interface to Stackless Python's multitasking towards the ideas behind the Limbo Language. Besides the tasklets, there are "channel" objects, which allow for communication between tasklets. This approach is simple and powerful. Blocking of tasklets takes place on writes when no tasklet is listening, or on reads, when no data is available. There is some nice introduction to Limbo at http://www.vitanuova.com/inferno/papers/descent.html written by Brian W. Kernighan, one of the inventors of the C language. I hope to have a prototype ready by end of April. See the stackless homepage for more news, including the new sponsorship honor page at: -- Christian Tismer :^) Mission Impossible 5oftware : Have a break! Take a ride on Python's Johannes-Niemeyer-Weg 9a : *Starship* http://starship.python.net/ 14109 Berlin : PGP key -> http://wwwkeys.pgp.net/ work +49 30 89 09 53 34 home +49 30 802 86 56 pager +49 173 24 18 776 PGP 0x57F3BF04 9064 F4E1 D754 C2FF 1619 305B C09C 5A3B 57F3 BF04 whom do you want to sponsor today? http://www.stackless.com/ From jjl@pobox.com Wed Apr 24 20:17:54 2002 From: jjl@pobox.com (John J. Lee) Date: Wed, 24 Apr 2002 20:17:54 +0100 Subject: [ANN] ClientCookie: HTTP cookie handling on client end In-Reply-To: References: Message-ID: On Tue, 23 Apr 2002, John J. Lee wrote: > ClientCookie 0.02a > > http://wwwsearch.sourceforge.net/README-ClientCookie > http://wwwsearch.sourceforge.net/ClientCookie-0.02a.tar.gz > or http://wwwsearch.sourceforge.net/ClientCookie-002a.zip Oops, here are some readable URLs: http://wwwsearch.sourceforge.net/README.txt http://wwwsearch.sourceforge.net/ClientCookie/ClientCookie-0.02a.tar.gz or http://wwwsearch.sourceforge.net/ClientCookie/ClientCookie-002a.zip John From chixson@nice.tzo.com Thu Apr 25 06:04:00 2002 From: chixson@nice.tzo.com (Adam Hixson) Date: Thu, 25 Apr 2002 00:04:00 -0500 Subject: Personal python webmail Message-ID: I'd like to announce the release of a new, simple program to allow individuals the joy that is webmail. Requiring python 2.2, openssl, the m2crypto module and a pop client that can deposit mail into /var/mail unix-like files ppwm v0.0.4.1.0 will serve email over a secured http connection. It can handle MIME attachments as well. Give it a try. From p.magwene@snet.net Thu Apr 25 18:15:52 2002 From: p.magwene@snet.net (Paul Magwene) Date: Thu, 25 Apr 2002 17:15:52 GMT Subject: ANN: disipyl plotting library - version 0.7 Message-ID: DESCRIPTION: ----------- disipyl is an object-oriented wrapper around the DISLIN plotting library. DISLIN is a powerful and flexible multiplatform (Win32, Unix, Linux, etc.) library designed for displaying scientific data. DISLIN's author, Helmut Michels, has made available a DISLIN plotting extension for the Python programming language (see http://www.linmpi.mpg.de/dislin/ for more details). disipyl provides a set of classes which represent various aspects of DISLIN plots, as well as providing some easy to use classes for creating commonly used plot formats (e.g. scatter plots, histograms, 3-D surface plots). A major goal in designing the library was to facilitate interactive data exploration and plot creation. Documentation, a tutorial, and a demo program are included. The library has been tested on Win32, Linux, and FreeBSD, but I anticipate that it should work on any platform which can make use of Python, NumPy, and the DISLIN python extensions. Feedback, comments, and critique are gladly accepted (email: paul.magwene@yale.edu). VERSION: ------- This is release 0.7 of disipyl. CHANGES: ------- New in this release: * Include a wxPython demo based on an example submitted by Les Schaffer * Added support for generating PNG and PDF versions of plots as string buffers (useful for serving images to web pages) * Fixed a bug in Text class * Fixed bug in FunctionPlot class * Modified the format of the INFOMODULE option to take both a module name and a class name * Implemented "mylabels" options for Axis, as submitted by Reggie Duggard * updated optioninfo documentation URL: ---- You can find disipyl at: http://pantheon.yale.edu/~pmm34/disipyl.html From greg@cosc.canterbury.ac.nz Fri Apr 26 05:31:40 2002 From: greg@cosc.canterbury.ac.nz (Greg Ewing) Date: Fri, 26 Apr 2002 16:31:40 +1200 Subject: ANN: Pyrex 0.1.2 Message-ID: I've fixed a few more bugs and made a new version of Pyrex available: http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ Synopsis: Pyrex is a new language for writing Python extension modules. It lets you write code that freely mixes operations on C and Python data, with all Python reference counting and error checking handled automatically. -- Greg Ewing, Computer Science Dept, University of Canterbury, Christchurch, New Zealand To get my email address, please visit my web page: http://www.cosc.canterbury.ac.nz/~greg From altis@semi-retired.com Fri Apr 26 19:02:38 2002 From: altis@semi-retired.com (Kevin Altis) Date: Fri, 26 Apr 2002 11:02:38 -0700 Subject: ANN: wxPython Mac on OS X preview Message-ID: There are disk images (binary installers) of MachoPython 2.2.1 and the wxMacPython 2.3.3 preview build available for OS X at: http://sourceforge.net/project/showfiles.php?group_id=10718&release_id=56880 This software should be considered beta quality. It is not the final wxPython Mac 2.3.3 release. MachoPython 2.2.1 is required to use wxPython Mac. I made an announcement on my blog, but forgot to post to c.l.py. http://radio.weblogs.com/0102677/2002/04/24.html#a49 The most recent information is available on the wxPython-mac mailing list http://lists.wxwindows.org/mailman/listinfo/wxpython-mac If you want to help with the project or just join in the fun please subscribe. Bug fixes and new binaries should be appearing frequently as a lot of testing and work is being done on wxMac (the C++ wxWindows sources) and wxPython Mac right now. Frank Vercruesse has provided some instructions for building from cvs. http://lists.wxwindows.org/pipermail/wxpython-mac/2002-April/000227.html Finally, as might be expected, I'm pretty excited about this because it means PythonCard works on OS X. More info on that topic is available on the pythoncard-users mailing list http://lists.sourceforge.net/lists/listinfo/pythoncard-users and the wiki page http://wiki.wxpython.org/index.cgi/PythonCardOnMac ka --- Kevin Altis altis@semi-retired.com From jjl@pobox.com Sun Apr 28 19:18:12 2002 From: jjl@pobox.com (John J. Lee) Date: Sun, 28 Apr 2002 19:18:12 +0100 Subject: ClientCookie 0.03b released Message-ID: ClientCookie 0.03b http://wwwsearch.sourceforge.net/ClientCookie Changes since 0.02a * The download URL is correct! * Interface is stable. * Has now been used in anger, by me. * Fixed _ClientCookie._host function (now works with proxies). * Fixed HTTPHandler, etc. * Work-around for netscape cookies with bad paths. * Automatic redirections (with urllib2) now work (for netscape cookies only). * Handling of RFC2965 cookies is currently turned off during automatic redirections, until I figure out exactly which cookies should be blocked. * Included fixed version of HTTPRedirectHandler: does GET instead of POST during redirects, as required by RFC1945 (bug #549151 on SF). * str2time function is now importable directly from ClientCookie. ClientCookie is a Python module for handling cookies on the client side, useful for accessing web sites that require cookies to be set, and returned later. It is a port of Gisle Aas' Perl module HTTP::Cookies, from the libwww-perl library. Both RFC2965 and Netscape cookies are supported. import ClientCookie import urllib2 request = urllib2.Request("http://www.acme.com/") # note we're using the urlopen from ClientCookie, not urllib2 result = ClientCookie.urlopen(request) # let's say this next request requires a cookie that was set in result request2 = urllib2.Request("http://www.acme.com/flying_machines.html") result2 = ClientCookie.urlopen(request2) Python 2.0 or above is required (though I may fix it to work with 1.52 eventually), and urllib2 is recommended but not required. Note that the version of urllib2 from Python 2.0 is too old: if you have Python 2.0, get the version from Python 2.1 (available from the source distribution or CVS from http://www.python.org). Distributed under the Perl Artistic License. John From chris.arndt@web.de Mon Apr 29 11:46:50 2002 From: chris.arndt@web.de (Christopher Arndt) Date: Mon, 29 Apr 2002 12:46:50 +0200 (CEST) Subject: ANN: pylize 1.0b: online presentation generation tool Message-ID: WHAT IS IT?: pylize is a Python script that generates a set of HTML files that make up an on-screen presentation from a master file. The HTML files can be viewed with any CSS-aware browser. The master file contains the text for all the slides and some additional information like title, author etc. pylize can also create a template master file for you. PREREQUISITES: Python >= 2.0 HTMLgen PIL (optional) FEATURES: * generate a template master document * create a set of HTML slides from the master document * automatic creation of the table of contents * a nice CSS driven slide layout, including logo, navigation links, progress-bar etc. * easy changing of layout through templates * all information for a presentation in one master file, but configurable through a per-user options file * fully localized HOMEPAGE/DOWNLOAD/DEMO: NOTES: This is the first public release. I have tried to write the script as portable as possible, but I have currently no access to a Windows or MAC OS environment. That's why this is a beta release. I would like to ask interested individuals to get and try the software on different platforms and inform me of any problems. Any other feedback is also always welcome! AUTHOR: Christopher Arndt CREDITS: pylize is a Python-clone of: PLies by Dobrica Pavlinusic which is in turn inspired by: XLies by Sami Lempinen and: W3C SlideMaker by Stephan Montigaud, Pierre Fillault and Masayasu Ishikawa -- ... cause we all have wings, but some of us don't know why! (INXS) Christopher Arndt [t] +49 173-9542751 system administration [w] www.chrisarndt.de & linux training [e] chris.arndt@web.de From jmiller@stsci.edu Mon Apr 29 18:13:45 2002 From: jmiller@stsci.edu (Todd Miller) Date: Mon, 29 Apr 2002 13:13:45 -0400 Subject: ANN: Numarray-0.3.3 Message-ID: Numarray 0.3.3 --------------------------------- Numarray is an array processing package designed to efficiently manipulate large multi-dimensional arrays. Numarray is modelled after Numeric and features c-code generated from python template scripts, the capacity to operate directly on arrays in files, and improved type promotions. Numarray-0.3.3 features improved support for arrays of complex numbers, re-implementing complex types using generated code. In addition to being faster, the new complex ufuncs are better integrated with the numarray type system, so operations between numarrays and complex scalars now work properly. This release also fixes a problem experienced by RedHat Linux users installing numarray from source. WHERE ----------- Numarray-0.3.3 windows executable installers and source code tar ball is here: http://sourceforge.net/project/showfiles.php?group_id=1369 Numarray is hosted by Source Forge in the same project which hosts Numeric: http://sourceforge.net/projects/numpy/ The web page for Numarray information is at: http://stsdas.stsci.edu/numarray/index.html Trackers for Numarray Bugs, Feature Requests, Support, and Patches are at the Source Forge project for NumPy at: http://sourceforge.net/tracker/?group_id=1369 REQUIREMENTS -------------------------- numarray-0.3.3 requires Python 2.0 or greater. AUTHORS, LICENSE ------------------------------ Numarray was written by Perry Greenfield, Rick White, Todd Miller, JC Hsu, Paul Barrett, Phil Hodge at the Space Telescope Science Institute. Thanks go to Jochen Kupper of the University of North Carolina for his work on Numarray and for porting the Numarray manual to TeX format. Numarray is made available under a BSD-style License. See LICENSE.txt in the source distribution for details. -- Todd Miller jmiller@stsci.edu From paul@boddie.net Mon Apr 29 20:33:59 2002 From: paul@boddie.net (Paul Boddie) Date: 29 Apr 2002 12:33:59 -0700 Subject: Python Web Frameworks Overview Message-ID: The Python Web Frameworks Overview attempts to provide a subjective comparison, analysis and overview of the major (or most recent or active) Python Web frameworks including Zope, Webware, SkunkWeb and jonpy, with Twisted, Quixote and Albatross to be included soon. The objective is that information on each framework will become more detailed over time - contributions and feedback are very welcome! Although the intention is that the Python Web Frameworks Overview will surpass the previously well-known Python Web Modules Overview in terms of quality of information, the latter document has been revised to include all packages which are less popular, less frequently updated (even abandoned) or less fashionable (even obsolete) in the original summary tables. Please note the URL, changing those bookmarks and references to the Python Web Modules Overview to the following: http://www.boddie.org.uk/python/web_frameworks.html Finally, it is not the intention that this document will summarise every single Python Web-related module in existence. For this purpose, please remember to use the Vaults of Parnassus to register your projects! (See the Python home page - http://www.python.org - for details.) -- Paul Boddie http://www.boddie.org.uk/paul/ From andy@agmweb.ca Tue Apr 30 03:12:40 2002 From: andy@agmweb.ca (Andy McKay) Date: Mon, 29 Apr 2002 19:12:40 -0700 Subject: VanPyz meeting: May 7th Message-ID: Come and join what will likely be a lively debate as XML and Python guru Paul Prescod will be giving us his opinions on using different Web Services with Python. "Web Services in Python: SOAP, XML-RPC and Alternatives"... Date: Tuesday, April 2nd Time: 7pm Location: ActiveState, 580 Granville, Vancouver, BC (http://www.activestate.com/Contact/) VanPyZ is the Vancouver Python and Zope users group. We meet every month to discuss Python, Zope and other stuff. Mailing list: http://lists.zpug.org/mailman/listinfo/vanpyz Web site: http://vanpyz.agmweb.ca -- Andy McKay From keyton@weissinger.org Tue Apr 30 04:31:55 2002 From: keyton@weissinger.org (A. Keyton Weissinger) Date: Mon, 29 Apr 2002 23:31:55 -0400 Subject: [ANN] Puffin 0.8.8 Released -- Web App Regression Testing Just Got Easier In-Reply-To: Message-ID: ** PUFFIN 0.8.8 RELEASE! ** It's my distinct pleasure to announce the release of the 0.8.8 release of the Puffin web application testing framework! This is the most powerful, easiest to use puffin release YET! --------------------------------------------------------------------- Highlights: - MUCH EASIER TO USE. - NEW DEMO APPLICATION, CONFIG FILE AND TEST PLANS INCLUDED. - BETTER HTTP RESPONSE ANALYZERS. - MORE POWERFUL INPUT TOKEN PROCESSORS. - MORE FLEXIBLE OUTPUT TOKEN PROCESSORS. - MANY DOCUMENTATION IMPROVEMENTS. - ASSORTED BUGFIXES. --------------------------------------------------------------------- Details: - (MUCH EASIER TO USE) In response to LOADS of rigorous testing, user feedback and code refactoring centered on ease-of-use, Puffin has been significantly simplified in terms of configuration and test plan construction. - (NEW DEMO APPLICATION, CONFIG FILE AND TEST PLANS INCLUDED) With this release is included a Perl CGI demo application with affiliated sample configuration and test plan files of various types. You can play with these files in building your understanding of Puffin and can extend them when it comes time to build tests for your web application. [Thank you, Ernie Hershey!!!] - (BETTER HTTP RESPONSE ANALYZERS) More powerful test action response analyzers. In previous releases of Puffin, the focus was on providing response analyzers for Puffin to execute against ALL test actions in your test plan. In this release, the focus is more on providing more customizable response analyzers to allow for more robust testing of specific, dynamic test actions. This makes Puffin even more useful for involved test actions in more complex web applications. - (MORE POWERFUL INPUT TOKEN PROCESSORS) There are now two new input processors which allow for retrieval of the next item in a list (where list items are specified either through list item parameters or through the name of a token containing a list object). - (MORE FLEXIBLE OUTPUT TOKEN PROCESSORS) More flexible output processors allow you to extract very complex information from your test actions' responses (easier regular expression processing, for example). - (MANY DOCUMENTATION IMPROVEMENTS) The documentation has been updated to reflect the many framework changes to the puffin system. All examples now reflect code from the demo application. The setup of the demo application has been added to the Getting Started guide. Finally, I cleaned up the nasty Word generated HTML and removed the RTF versions of the documentation. - (ASSORTED BUGFIXES) Several places in the code docs and user's guide referred to PUT when I meant POST. This [INCREDIBLY STUPID] error has been fixed. There were problems with sending both a querystring and a posted value. This has been resolved. There were several issues with logging that have been resolved. --------------------------------------------------------------------- What is Puffin? Puffin allows you to test any web application or service. Once customized to your web application, you can use Puffin to unit test individual web pages, system test your entire web application, or load test your entire site. Now in its third public release, this web application testing framework is even more flexible and robust than before. Have a complex web application that needs to be rigorously tested? Puffin is the answer! --------------------------------------------------------------------- Why 0.8.8? As you will see when you start using it, this version is a huge evolution over what was there in 0.8.5. However, to be fair, most of the changes in this release are features that should've been there all along, so I only moved the release number 0.0.3 points! ;-) Check out Puffin TODAY at http://puffin.sourceforge.net Keyton Weissinger keyton@weissinger.org --------------------------------------------------------------------- From salmonia@cf.ac.uk Tue Apr 30 14:34:17 2002 From: salmonia@cf.ac.uk (Alan James Salmoni) Date: Tue, 30 Apr 2002 14:34:17 +0100 Subject: ANN: SalStat statistics package 0.1.3 Message-ID: Hello Pythonista's, Just a short note to announce the 0.1.3 of SalStat, a relatively new package for scientific statistical analysis written entirely in Python and wxPython. It aims to be a little like SPSS or Statview, but has been written with the "nervous" user in mind (people not comfortable with statistics or computers) as I have taught SPSS to undergrads and seen their problems. The main website is at http://salstat.sunsite.dk and source code is available from http://salstat.sunsite.dk/downloads.html. For the curious, screenshots are at http://salstat.sunsite.dk/screenshots.html. All code is released under the GNU GPL, and there is a mailing list at sourceforge for anyone interested. This release consolidates previous releases - a number of tests have been added (such as the Point Biserial Correlation, Linear Regression and single factor between subjects anova), the GUI has been improved, and the output of the analysis (in html) is better formatted (with the anova output as a nice table). SalStat currently runs on Linux and Windows, and (if the author can get his greasy paws on a nice new Mac) OSX possibly depending upon the status of the OSX port of wxPython. Way to go guys! Alan james Salmoni Lead Developer - SalStat.