From boud@rempt.xs4all.nl Thu Feb 1 23:08:35 2001 From: boud@rempt.xs4all.nl (Boudewijn Rempt) Date: Fri, 2 Feb 2001 00:08:35 +0100 (CET) Subject: ANN: Kura 1.0 released Message-ID: Kura 1.0 ------------------------------------------------------------------ I am pleased to announce the first release of Kura. Kura is a complete, professional system for the handling of linguistic data, especially fieldwork data from small-corpus languages. It allows users to enter texts in any language, analyze those texts and bring the analyzed linguistic facts into relation with each other. Kura includes both a desktop application for easy handling of interlinear texts, lexica and other linguistic data, and a special-purpose webserver for the online presentation of the analyzed data. This is the first full release of Kura for Windows and Unix/X11. Kura is a complex piece of software, dependent upon many runtime components. Kura will not run without some installation effort. Kura (both this release and frequent development snapshots) is available at: http://www.xs4all.nl/~bsarempt/linguistics/index.html A sample web-server is available at: http://www.valdyas.org:8000 Kura runs equally well on both Windows and Unix/X11. For those who prefer the convenience, Kura is also available on CD, for $49.95. The CD includes Kura, a sample database, binary versions of all runtime components for Windows and Linux/i386 and full source to Kura and all the runtime components (except for Qt 2.2.2 for Windows, which is available in binary form only). Boudewijn Rempt | boud@rempt.xs4all.nl ------------------------------------------------------------------ Features * Interlinear text editor * Interlinear text export * xml text import/export * text parser * Lexicon editor * Web-server * fully Unicode enabled * Unicode character entry application * Pinyin character entry application * sample configuration database * the start of a manual * multi-user * multi-language * network transparent * support for standard tagsets ------------------------------------------------------------------ Requirements Kura uses the following run-time components: MySQL, MySQLdb, Python, PyQt. For full requirements, please look at the web address mentioned above. ------------------------------------------------------------------ Roadmap Kura will likely be extended with the following features in the future: * improved interlinear text editor * lexicon import/export * more text import/export filters * more flexible layout management for the presentation of interlinear texts (using xml templates) * direct printing from the application * editable tables of data * per-language definition of parsers (both syntax/context and morphological parsers) * a real manual * user-definable keyboard layouts * point-and-click keyboard window * more flexible webserver document creation * freely accessible CVS at Sourceforge.net And of course numerous bugfixes. I will try to keep Kura compatible with the runtime components used in this release, for at least a year. ------------------------------------------------------------------ License Kura is free software and distributed under the Python license. This means that anyone can download and use Kura for free, anyone can alter Kura to his or her own liking and distribute the altered version free or for profit. However any changes must be contributed back to the me, and I have the right to incorporate those changes in new, free versions of Kura. ------------------------------------------------------------------

Kura 1.0 - Kura is an application for the analysis and presentation of linguistic data. (01-Feb-2001) Boudewijn Rempt | http://www.valdyas.org From fdrake@acm.org Fri Feb 2 17:56:27 2001 From: fdrake@acm.org (Fred L. Drake, Jr.) Date: Fri, 2 Feb 2001 12:56:27 -0500 (EST) Subject: Python 2.1 alpha 2 docs released Message-ID: The documentation for the Python 2.1 alpha 2 release is now available. View it online at: http://python.sourceforge.net/devel-docs/ (This version will be updated as the documentation evolves, so will be updated beyond what's in the downloadable packages.) Downloadable packages in many formats are also available at: ftp://ftp.python.org/pub/python/doc/2.1a2/ Please avoid printing this documentation -- it's for the alpha, and could waste entire forests! Thanks to everyone who has helped improve the documentation! As always, suggestions and bug reports are welcome. For more instructions on how to file bug reports and where to send suggestions for improvement, see: http://python.sourceforge.net/devel-docs/about.html -Fred -- Fred L. Drake, Jr. PythonLabs at Digital Creations From jeremy@alum.mit.edu Fri Feb 2 23:40:08 2001 From: jeremy@alum.mit.edu (Jeremy Hylton) Date: Fri, 2 Feb 2001 18:40:08 -0500 (EST) Subject: Python 2.1 alpha 2 released Message-ID: While Guido is working the press circuit at the LinuxWorld Expo in New York City, the Python developers, including the many volunteers and the folks from PythonLabs, were busy finishing the second alpha release of Python 2.1. The release is currently available from SourceForge and will also be available from python.org later today. You can find the source release at: http://sourceforge.net/project/showfiles.php?group_id=5470 The Windows installer will be ready shortly. Fred Drake announced the documentation release earlier today. You can browse the new docs online at http://python.sourceforge.net/devel-docs/ or download them from ftp://ftp.python.org/pub/python/doc/2.1a2/ Please give it a good try! The only way Python 2.1 can become a rock-solid product is if people test the alpha releases. If you are using Python for demanding applications or on extreme platforms, we are particularly interested in hearing your feedback. Are you embedding Python or using threads? Please test your application using Python 2.1a2! Please submit all bug reports through SourceForge: http://sourceforge.net/bugs/?group_id=5470 Here's the NEWS file: What's New in Python 2.1 alpha 2? ================================= Core language, builtins, and interpreter - Scopes nest. If a name is used in a function or class, but is not local, the definition in the nearest enclosing function scope will be used. One consequence of this change is that lambda statements could reference variables in the namespaces where the lambda is defined. In some unusual cases, this change will break code. In all previous version of Python, names were resolved in exactly three namespaces -- the local namespace, the global namespace, and the builtin namespace. According to this old definition, if a function A is defined within a function B, the names bound in B are not visible in A. The new rules make names bound in B visible in A, unless A contains a name binding that hides the binding in B. Section 4.1 of the reference manual describes the new scoping rules in detail. The test script in Lib/test/test_scope.py demonstrates some of the effects of the change. The new rules will cause existing code to break if it defines nested functions where an outer function has local variables with the same name as globals or builtins used by the inner function. Example: def munge(str): def helper(x): return str(x) if type(str) != type(''): str = helper(str) return str.strip() Under the old rules, the name str in helper() is bound to the builtin function str(). Under the new rules, it will be bound to the argument named str and an error will occur when helper() is called. - The compiler will report a SyntaxError if "from ... import *" occurs in a function or class scope. The language reference has documented that this case is illegal, but the compiler never checked for it. The recent introduction of nested scope makes the meaning of this form of name binding ambiguous. In a future release, the compiler may allow this form when there is no possibility of ambiguity. - repr(string) is easier to read, now using hex escapes instead of octal, and using \t, \n and \r instead of \011, \012 and \015 (respectively): >>> "\texample \r\n" + chr(0) + chr(255) '\texample \r\n\x00\xff' # in 2.1 '\011example \015\012\000\377' # in 2.0 - Functions are now compared and hashed by identity, not by value, since the func_code attribute is writable. - Weak references (PEP 205) have been added. This involves a few changes in the core, an extension module (_weakref), and a Python module (weakref). The weakref module is the public interface. It includes support for "explicit" weak references, proxy objects, and mappings with weakly held values. - A 'continue' statement can now appear in a try block within the body of a loop. It is still not possible to use continue in a finally clause. Standard library - mailbox.py now has a new class, PortableUnixMailbox which is identical to UnixMailbox but uses a more portable scheme for determining From_ separators. Also, the constructors for all the classes in this module have a new optional `factory' argument, which is a callable used when new message classes must be instantiated by the next() method. - random.py is now self-contained, and offers all the functionality of the now-deprecated whrandom.py. See the docs for details. random.py also supports new functions getstate() and setstate(), for saving and restoring the internal state of the generator; and jumpahead(n), for quickly forcing the internal state to be the same as if n calls to random() had been made. The latter is particularly useful for multi- threaded programs, creating one instance of the random.Random() class for each thread, then using .jumpahead() to force each instance to use a non-overlapping segment of the full period. - random.py's seed() function is new. For bit-for-bit compatibility with prior releases, use the whseed function instead. The new seed function addresses two problems: (1) The old function couldn't produce more than about 2**24 distinct internal states; the new one about 2**45 (the best that can be done in the Wichmann-Hill generator). (2) The old function sometimes produced identical internal states when passed distinct integers, and there was no simple way to predict when that would happen; the new one guarantees to produce distinct internal states for all arguments in [0, 27814431486576L). - The socket module now supports raw packets on Linux. The socket family is AF_PACKET. - test_capi.py is a start at running tests of the Python C API. The tests are implemented by the new Modules/_testmodule.c. - A new extension module, _symtable, provides provisional access to the internal symbol table used by the Python compiler. A higher-level interface will be added on top of _symtable in a future release. Windows changes - Build procedure: the zlib project is built in a different way that ensures the zlib header files used can no longer get out of synch with the zlib binary used. See PCbuild\readme.txt for details. Your old zlib-related directories can be deleted; you'll need to download fresh source for zlib and unpack it into a new directory. - Build: New subproject _test for the benefit of test_capi.py (see above). - Build: subproject ucnhash is gone, since the code was folded into the unicodedata subproject. What's New in Python 2.1 alpha 1? ================================= Core language, builtins, and interpreter - There is a new Unicode companion to the PyObject_Str() API called PyObject_Unicode(). It behaves in the same way as the former, but assures that the returned value is an Unicode object (applying the usual coercion if necessary). - The comparison operators support "rich comparison overloading" (PEP 207). C extension types can provide a rich comparison function in the new tp_richcompare slot in the type object. The cmp() function and the C function PyObject_Compare() first try the new rich comparison operators before trying the old 3-way comparison. There is also a new C API PyObject_RichCompare() (which also falls back on the old 3-way comparison, but does not constrain the outcome of the rich comparison to a Boolean result). The rich comparison function takes two objects (at least one of which is guaranteed to have the type that provided the function) and an integer indicating the opcode, which can be Py_LT, Py_LE, Py_EQ, Py_NE, Py_GT, Py_GE (for <, <=, ==, !=, >, >=), and returns a Python object, which may be NotImplemented (in which case the tp_compare slot function is used as a fallback, if defined). Classes can overload individual comparison operators by defining one or more of the methods__lt__, __le__, __eq__, __ne__, __gt__, __ge__. There are no explicit "reflected argument" versions of these; instead, __lt__ and __gt__ are each other's reflection, likewise for__le__ and __ge__; __eq__ and __ne__ are their own reflection (similar at the C level). No other implications are made; in particular, Python does not assume that == is the Boolean inverse of !=, or that < is the Boolean inverse of >=. This makes it possible to define types with partial orderings. Classes or types that want to implement (in)equality tests but not the ordering operators (i.e. unordered types) should implement == and !=, and raise an error for the ordering operators. It is possible to define types whose rich comparison results are not Boolean; e.g. a matrix type might want to return a matrix of bits for A < B, giving elementwise comparisons. Such types should ensure that any interpretation of their value in a Boolean context raises an exception, e.g. by defining __nonzero__ (or the tp_nonzero slot at the C level) to always raise an exception. - Complex numbers use rich comparisons to define == and != but raise an exception for <, <=, > and >=. Unfortunately, this also means that cmp() of two complex numbers raises an exception when the two numbers differ. Since it is not mathematically meaningful to compare complex numbers except for equality, I hope that this doesn't break too much code. - Functions and methods now support getting and setting arbitrarily named attributes (PEP 232). Functions have a new __dict__ (a.k.a. func_dict) which hold the function attributes. Methods get and set attributes on their underlying im_func. It is a TypeError to set an attribute on a bound method. - The xrange() object implementation has been improved so that xrange(sys.maxint) can be used on 64-bit platforms. There's still a limitation that in this case len(xrange(sys.maxint)) can't be calculated, but the common idiom "for i in xrange(sys.maxint)" will work fine as long as the index i doesn't actually reach 2**31. (Python uses regular ints for sequence and string indices; fixing that is much more work.) - Two changes to from...import: 1) "from M import X" now works even if M is not a real module; it's basically a getattr() operation with AttributeError exceptions changed into ImportError. 2) "from M import *" now looks for M.__all__ to decide which names to import; if M.__all__ doesn't exist, it uses M.__dict__.keys() but filters out names starting with '_' as before. Whether or not __all__ exists, there's no restriction on the type of M. - File objects have a new method, xreadlines(). This is the fastest way to iterate over all lines in a file: for line in file.xreadlines(): ...do something to line... See the xreadlines module (mentioned below) for how to do this for other file-like objects. - Even if you don't use file.xreadlines(), you may expect a speedup on line-by-line input. The file.readline() method has been optimized quite a bit in platform-specific ways: on systems (like Linux) that support flockfile(), getc_unlocked(), and funlockfile(), those are used by default. On systems (like Windows) without getc_unlocked(), a complicated (but still thread-safe) method using fgets() is used by default. You can force use of the fgets() method by #define'ing USE_FGETS_IN_GETLINE at build time (it may be faster than getc_unlocked()). You can force fgets() not to be used by #define'ing DONT_USE_FGETS_IN_GETLINE (this is the first thing to try if std test test_bufio.py fails -- and let us know if it does!). - In addition, the fileinput module, while still slower than the other methods on most platforms, has been sped up too, by using file.readlines(sizehint). - Support for run-time warnings has been added, including a new command line option (-W) to specify the disposition of warnings. See the description of the warnings module below. - Extensive changes have been made to the coercion code. This mostly affects extension modules (which can now implement mixed-type numerical operators without having to use coercion), but occasionally, in boundary cases the coercion semantics have changed subtly. Since this was a terrible gray area of the language, this is considered an improvement. Also note that __rcmp__ is no longer supported -- instead of calling __rcmp__, __cmp__ is called with reflected arguments. - In connection with the coercion changes, a new built-in singleton object, NotImplemented is defined. This can be returned for operations that wish to indicate they are not implemented for a particular combination of arguments. From C, this is Py_NotImplemented. - The interpreter accepts now bytecode files on the command line even if they do not have a .pyc or .pyo extension. On Linux, after executing echo ':pyc:M::\x87\xc6\x0d\x0a::/usr/local/bin/python:' > /proc/sys/fs/binfmt_misc/register any byte code file can be used as an executable (i.e. as an argument to execve(2)). - %[xXo] formats of negative Python longs now produce a sign character. In 1.6 and earlier, they never produced a sign, and raised an error if the value of the long was too large to fit in a Python int. In 2.0, they produced a sign if and only if too large to fit in an int. This was inconsistent across platforms (because the size of an int varies across platforms), and inconsistent with hex() and oct(). Example: >>> "%x" % -0x42L '-42' # in 2.1 'ffffffbe' # in 2.0 and before, on 32-bit machines >>> hex(-0x42L) '-0x42L' # in all versions of Python The behavior of %d formats for negative Python longs remains the same as in 2.0 (although in 1.6 and before, they raised an error if the long didn't fit in a Python int). %u formats don't make sense for Python longs, but are allowed and treated the same as %d in 2.1. In 2.0, a negative long formatted via %u produced a sign if and only if too large to fit in an int. In 1.6 and earlier, a negative long formatted via %u raised an error if it was too big to fit in an int. - Dictionary objects have an odd new method, popitem(). This removes an arbitrary item from the dictionary and returns it (in the form of a (key, value) pair). This can be useful for algorithms that use a dictionary as a bag of "to do" items and repeatedly need to pick one item. Such algorithms normally end up running in quadratic time; using popitem() they can usually be made to run in linear time. Standard library - In the time module, the time argument to the functions strftime, localtime, gmtime, asctime and ctime is now optional, defaulting to the current time (in the local timezone). - The ftplib module now defaults to passive mode, which is deemed a more useful default given that clients are often inside firewalls these days. Note that this could break if ftplib is used to connect to a *server* that is inside a firewall, from outside; this is expected to be a very rare situation. To fix that, you can call ftp.set_pasv(0). - The module site now treats .pth files not only for path configuration, but also supports extensions to the initialization code: Lines starting with import are executed. - There's a new module, warnings, which implements a mechanism for issuing and filtering warnings. There are some new built-in exceptions that serve as warning categories, and a new command line option, -W, to control warnings (e.g. -Wi ignores all warnings, -We turns warnings into errors). warnings.warn(message[, category]) issues a warning message; this can also be called from C as PyErr_Warn(category, message). - A new module xreadlines was added. This exports a single factory function, xreadlines(). The intention is that this code is the absolutely fastest way to iterate over all lines in an open file(-like) object: import xreadlines for line in xreadlines.xreadlines(file): ...do something to line... This is equivalent to the previous the speed record holder using file.readlines(sizehint). Note that if file is a real file object (as opposed to a file-like object), this is equivalent: for line in file.xreadlines(): ...do something to line... - The bisect module has new functions bisect_left, insort_left, bisect_right and insort_right. The old names bisect and insort are now aliases for bisect_right and insort_right. XXX_right and XXX_left methods differ in what happens when the new element compares equal to one or more elements already in the list: the XXX_left methods insert to the left, the XXX_right methods to the right. Code that doesn't care where equal elements end up should continue to use the old, short names ("bisect" and "insort"). - The new curses.panel module wraps the panel library that forms part of SYSV curses and ncurses. Contributed by Thomas Gellekum. - The SocketServer module now sets the allow_reuse_address flag by default in the TCPServer class. - A new function, sys._getframe(), returns the stack frame pointer of the caller. This is intended only as a building block for higher-level mechanisms such as string interpolation. Build issues - For Unix (and Unix-compatible) builds, configuration and building of extension modules is now greatly automated. Rather than having to edit the Modules/Setup file to indicate which modules should be built and where their include files and libraries are, a distutils-based setup.py script now takes care of building most extension modules. All extension modules built this way are built as shared libraries. Only a few modules that must be linked statically are still listed in the Setup file; you won't need to edit their configuration. - Python should now build out of the box on Cygwin. If it doesn't, mail to Jason Tishler (jlt63 at users.sourceforge.net). - Python now always uses its own (renamed) implementation of getopt() -- there's too much variation among C library getopt() implementations. - C++ compilers are better supported; the CXX macro is always set to a C++ compiler if one is found. Windows changes - select module: By default under Windows, a select() call can specify no more than 64 sockets. Python now boosts this Microsoft default to 512. If you need even more than that, see the MS docs (you'll need to #define FD_SETSIZE and recompile Python from source). - Support for Windows 3.1, DOS and OS/2 is gone. The Lib/dos-8x3 subdirectory is no more! -- Jeremy Hylton From doughellmann@bigfoot.com Sat Feb 3 18:22:52 2001 From: doughellmann@bigfoot.com (Doug Hellmann) Date: Sat, 3 Feb 2001 13:22:52 -0500 (EST) Subject: [Application] HappyDoc 1.1 Message-ID: HappyDoc 1.1 ------------ Python documentation extraction tool. HappyDoc is a tool for extracting documentation from Python source code. It differs from other such applications by the fact that it uses the parse tree for a module to derive the information used in its output, rather that importing the module directly. This allows the user to generate documentation for modules which need special context to be imported. Version 1.1 - Enhanced boolean command line switch handling to support values like 'yes', 'no', 'on', 'off', 'true', and 'false'. - Added an initial DocBook formatter implementation from Balazs Scheidler . - Per-directory README.txt detection. (Useful for Zope products and Python packages.) - Support LICENSE.txt, CHANGES.txt, ANNOUNCE.txt and other StructuredText files referenced from README.txt. Support external files which do not have .txt extension. - Now installs using distutils. - Include code related to Patch 103054 to fix problems with tables in HTML and to make the HTML output smaller by reducing extra whitespace. - Cleaned up some progress reporting output. - Added option to docset to set a prefix to every file or directory created as output. This is important for creating output with safe names in case module names end up being parsed to something which does not make a valid filename. It can also be useful when storing output in a web application server such as Zope, where some names might be reserved. - Added docset and formatter parmeter info to the output. - Formatter option to disable html quoting of docstring text. Download Download the latest version of HappyDoc from the home page on SourceForge: http://sourceforge.net/projects/happydoc Doc-string Format How does an author write documentation so that it will be marked up and look fancy? This is a perennial question for Python, and seems to have introduced a roadblock into the development of more robust and useful documentation tools. By separating the formatter classes from the docset classes, HappyDoc allows a user to create their own formatter to interpret comments in any way they see fit. The default for the HTMLTableFormatter (the default formatter for HappyDoc) is to treat __doc__ strings as StructuredText. Don't like StructuredText? Write your own formatter that does something different and drop it into place. Documentation not in Doc-strings It is not always desirable to put all documentation in __doc__ strings. Sometime, notably when working with Zope, special meaning is attached to the presence of __doc__ strings. For this reason, and to support existing code which might not have __doc__ strings, HappyDoc will find and extract documentation in Python comments. Comment documentation can contain all of the same formatting as __doc__ strings. The preceding comment marker will be stripped off and the lines will be assembled and treated as a block of StructuredText. To use this feature, it is important to place the comments **before** the named object which they describe. In this example: # # Class documentation goes here # class ClassWithNoDocStrings: "Using __doc__ strings overrides comment documentation." def method1(self, params): "This method uses a __doc__ string." pass # # Method2 does not use a __doc__ string. # def method2(self): pass The output would include the __doc__ strings for the class and for method1. It would also make it appear that method2 had a __doc__ string with the contents "Method2 does not use a __doc__ string." URL: http://happydoc.sourceforge.net License: Python Style Categories: Python Utilities Doug Hellmann (doughellmann@bigfoot.com) -- HappyDoc 1.1 -- Python documentation extraction tool. From stephen_purcell@yahoo.com Sun Feb 4 16:23:56 2001 From: stephen_purcell@yahoo.com (Steve Purcell) Date: Sun, 4 Feb 2001 17:23:56 +0100 Subject: [Announce] PyUnit 1.3 released Message-ID: Version 1.3 of the PyUnit unit testing framework is out, for those who are interested. Quick summary for those not familiar with PyUnit:- - PyUnit is a Python port of Java's popular JUnit testing framework - It provides a framework for easily writing unit and functional tests for your Python code, for aggregating the tests to run en-masse, and for running tests in text or GUI mode - PyUnit has been around since 1999 and is used in many projects, including Zope. Here's what's new in this release:- - Clearer and more verbose text output format - JPython and Python 2 compatibility - New FunctionTestCase class provides support for wrapping legacy test functions into PyUnit test case instances - Support for short descriptions of tests, taken from __doc__ strings by default - Updated and expanded documentation - Convenient new unittest.main() function for use by all test modules - Tests run in text mode can now be interrupted using ctrl-c For further information and downloadable packages, visit:- - http://pyunit.sourceforge.net/ Happy testing! -Steve -- Steve Purcell, Pythangelist Get testing at http://pyunit.sourceforge.net/ Available for consulting and training. "Even snakes are afraid of snakes." -- Steven Wright From jtravis@covalent.net Sun Feb 4 20:43:50 2001 From: jtravis@covalent.net (Jon Travis) Date: Sun, 4 Feb 2001 12:43:50 -0800 Subject: ANN: mod_snake 0.5.0 Message-ID: Mod Snake 0.5.0 --------------- An Apache module which allows plugins to be written in Python. Mod Snake is an Apache module written for the purpose to give Python developers the same power that C module writers have. It currently runs in both Apache 1.3 and Apache 2.0, providing access to new functionality such as writing protocol modules and filtering. It includes modules for Python CGI acceleration, embedded Python in HTML, and other example modules. URL: http://modsnake.sourceforge.net Catagories: Internet This release includes a huge number of enhancements and bug fixes. For the definitive list, see the ChangeLog on the mod_snake web site. - Created a RedHat RPM - Setup a testsuite framework - Numerous improvements to the build system - Fixed dependencies on GNU make - Added support for Python 2.0 - Sped up HTML with embedded Python processing (jepler@inetnebr.com) - Fixed an issue in the CGI acceleration module - etc. ;-) Jon Travis (jtravis@p00p.org) http://modsnake.sourceforge.net From jtravis@covalent.net Sun Feb 4 21:18:44 2001 From: jtravis@covalent.net (Jon Travis) Date: Sun, 4 Feb 2001 13:18:44 -0800 Subject: ANN: Auth DBAPI 0.10 Message-ID: Auth DBAPI 0.10 --------------- A mod_snake plugin for Apache authentication and authorization via DBAPI. DBAPI is a specification created by the Python Database SIG which defines a common interface for accessing database modules. Auth DBAPI is a module which allows mod_snake users to use DBAPI 1.0 and 2.0 database modules to authenticate and authorize users (e.g. Gadfly && MySQLdb). URL: http://modsnake.sourceforge.net/msmnet/auth_dbapi Catagories: Internet This is the initial public announcement. Jon Travis (jtravis@p00p.org) http://modsnake.sourceforge.net From x@vex.net Sun Feb 4 12:21:24 2001 From: x@vex.net (Parnassus Submission) Date: Sun, 4 Feb 2001 07:21:24 -0500 (EST) Subject: [Application] HappyDoc 1.3 Message-ID: HappyDoc 1.3 ------------ Python documentation extraction tool. HappyDoc is a tool for extracting documentation from Python source code. It differs from other such applications by the fact that it uses the parse tree for a module to derive the information used in its output, rather that importing the module directly. This allows the user to generate documentation for modules which need special context to be imported. This release resolves a few errors which slipped through in the 1.1 release. URL: http://happydoc.sourceforge.net License: Python Style Categories: Python Utilities Doug Hellmann -- HappyDoc 1.3 -- Python documentation extraction tool. From info@pythonware.com Mon Feb 5 10:55:49 2001 From: info@pythonware.com (PythonWare) Date: Mon, 5 Feb 2001 11:55:49 +0100 Subject: ANN: tkinter 3000 wck, release 1.0 alpha 1 Message-ID: the labs strikes again: The Tkinter 3000 project is working on a couple of enhancements to Python's popular Tkinter toolkit. First out is the Widget Construction Kit, which allows you to write new Tkinter widgets in pure Python. The first public alpha is now available from: http://www.pythonware.com/products/tkinter/tkinter3000.htm This distribution includes library source code, a couple of simple demos, and prebuilt Windows binaries for Python 1.5.2 and 2.0. See the site for documentation and information about other Tkinter 3000 3000 components. enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From x@vex.net Tue Feb 6 16:08:29 2001 From: x@vex.net (Parnassus Submission) Date: Tue, 6 Feb 2001 11:08:29 -0500 (EST) Subject: [Module] PyCES 0.10 Message-ID: <20010206160829.DCBFE5811@smaug.vex.net> PyCES 0.10 ---------- PyCES (Python Common Entities for Science) is a standard set of classes for scientific computing. PyCES (Python Common Entities for Science) is standard set of classes for scientific computing. PyCES is initially concentrating on basic physical entities and properties, including vector quantities (with units), automatic unit conversions, and abstract particles with mass, location, and velocity. PyCES will expand in the future to deal with more complex entities, as well as providing a simulation framework. The eventual goal is to have a useful set of foundation classes for all entities encountered in scientific computing. PyCES uses Numerical Python for its vector and matrix operations. (URL of download page is www.micpc.org/moresci.html#Downloads) URL: www.micpc.org License: Python Style Platform: Win32, Linux, other Unix Requires: Numerical Python Categories: Math, Scientific Charles Blilie -- PyCES 0.10 -- PyCES (Python Common Entities for Science) is a standard set of classes for scientific computing. From gregm@iname.com Sat Feb 10 10:29:23 2001 From: gregm@iname.com (Greg McFarlane) Date: Sat, 10 Feb 2001 21:29:23 +1100 Subject: ANNOUNCE: Pmw megawidgets 0.8.5 Message-ID: Pmw megawidgets Pmw.0.8.5 * Python 2.0 release * Pmw moved to SourceForge Pmw new home: http://pmw.sourceforge.net/ Pmw maintainer: Greg McFarlane A new release of Pmw is out. This is mainly a bug fix release for python 2.0, fixing a problem with Pmw.Counter caused by a change in the ascii representation of a long (no 'L'). Also, the home for Pmw development has moved to SourceForge. The Pmw sources and documentation are under CVS control and releases can be downloaded from there. I would like to thank Graham Dumpleton for allowing Pmw to be hosted at his web site for so long. I hope SourceForge will match the stability of Pmw's old site. Other changes in this release are: - Minor fixes to tests for Tk 8.3. - Fixed bug in Pmw.ScrolledFrame when given invalid flex options. - Added pmw2 font scheme, since the font used for balloon text with pmw1 is too small on Linux. - Removed syntax coloring from code window in demos. It did not look good and the pattern matching was not always correct. - Changed font size used for demos to 12 for Unix, since 14 looked too big under Linux. For more information on Pmw, see the (new) home page at http://pmw.sourceforge.net/ You can fetch the entire distribution from http://download.sourceforge.net/pmw/Pmw.0.8.5.tar.gz If you have any comments, enhancements or new contributions, please contact me (gregm@iname.com). ===================================================================== What is Pmw? Pmw is a GUI toolkit for building high-level compound widgets in Python using the Tkinter module. These compound widgets, called 'megawidgets', are constructed using other Tkinter widgets or Pmw megawidgets as component parts. It promotes consistent look and feel within and between graphical applications, is highly configurable and is easy to use. Pmw consists of: - A few base classes, providing a foundation for building megawidgets. - A library of flexible and extensible megawidgets built on the base classes, such as buttonboxes, notebooks, comboboxes, selection widgets, paned widgets, scrolled widgets and dialog windows. - A lazy importer/dynamic loader which is automatically invoked when Pmw is first imported. This gives unified access to all Pmw classes and functions through the Pmw. prefix. It also speeds up module loading time by only importing Pmw sub-modules when needed. - Reference documentation, consisting of complete listings of megawidget options, methods and components. Full descriptions are also available for all the base classes and several other megawidget classes. Descriptions of the other megawidgets will be released soon. - A test framework and tests for Pmw megawidgets. - A slick demonstration of the megawidgets. - An interface to the BLT busy, graph and vector commands. The interface to Pmw megawidgets is similar to basic Tk widgets, so it is easy for developers to include both megawidgets and basic Tk widgets in their graphical applications. In addition, Pmw megawidgets may themselves be extended, using either inheritance or composition. The use of the Pmw megawidgets replaces common widget combinations with higher level abstractions. This simplifies code, making it more readable and maintainable. The ability to extend Pmw megawidgets enables developers to create new megawidgets based on previous work. -- Greg McFarlane Really Good Software Pty Ltd Sydney Australia gregm@iname.com From mwh21@cam.ac.uk Mon Feb 12 12:10:00 2001 From: mwh21@cam.ac.uk (Michael Hudson) Date: Mon, 12 Feb 2001 12:10:00 +0000 (GMT) Subject: testing - do not approve! Message-ID: I haven't seen any clpa-announce mod requests for days. Wondering if something's broken. M. From bpederson@geocities.com Sat Feb 10 19:47:49 2001 From: bpederson@geocities.com (Barry Pederson) Date: Sat, 10 Feb 2001 13:47:49 -0600 Subject: QuakeWorld Python 1.0 Message-ID: QWPython (http://qwpython.sourceforge.net) is a Python-powered QuakeWorld dedicated server. The core engine has been wrapped up as a Python module and altered to call back to Python to execute Quake game logic. A QuakeC -> Python translator is also included, along with pre-translated versions of Deathmatch and Capture-The-Flag. Version 1.0 includes sourcecode which builds and runs on both Windows and Unix platforms, and Win32 binaries. Barry From contact@logilab.fr Mon Feb 12 19:27:47 2001 From: contact@logilab.fr (Ornicar) Date: Mon, 12 Feb 2001 14:27:47 -0500 (EST) Subject: [Module] vcalsax Message-ID: <20010212192747.5FE4B5831@smaug.vex.net> vcalsax ------- A VCalendar parser with a SAX API Vcalsax provides a VCal file parser exporting a SAX API. It is thus possible to see such file as a DOM tree, to manipulate it and store it back in the native format using an XSL Transformation. VCal is the file format used by many calendar programs, including KOrganiser and Evolution. URL: http://www.logilab.org/vcalsax/ Download: ftp://ftp.logilab.org/pub/vcalsax/ License: GPL Requires: PyXML (and 4Suite for Read-write access) Categories: XML, Calendar Ornicar (contact@logilab.fr) http://www.logilab.org/ -- vcalsax -- A VCalendar parser with a SAX API From amyk@foretec.com Mon Feb 12 23:43:35 2001 From: amyk@foretec.com (Amy Katherine) Date: Mon, 12 Feb 2001 18:43:35 -0500 Subject: ***Python 9 New Updates and Activities*** Message-ID: --=====================_32641116==_.ALT Content-Type: text/plain; charset="us-ascii"; format=flowed Greetings! The Python 9 conference agenda is now available on-line at http://www1.python9.org/p9-agenda.html. Python 9 will offer two lunchtime "Birds of a Feather" (BOF) meetings, one on Tuesday, March 6 and one on Wednesday, March 7. The topic for the Tuesday meeting is "Adding Iterators to Python", and the topic for the Wednesday meeting is "Adding Sets to Python". To sign up for one or both of these BOFs, please send an email note to: Iterator-BOF@python9.org and/or Set-BOF@python9.org. On each day, tables will be reserved for BOF participants at lunchtime, and lunch will be served promptly at 12 Noon. Following lunch, BOF participants will adjourn to a meeting room for the remainder of the lunch break. The location of the meeting room will be posted on the bulletin board in the registration area. On-line registration for Python 9 closes on Sunday, February 25, 2001. To register, please go to http://www1.python9.org/p9-reginfo.html. Rooms at the Hilton Long Beach are no longer available at the special group rate of $134 per night. However, rooms for Python 9 attendees are now available at the Holiday Inn Downtown Long Beach and the Westin Long Beach hotels at favorable rates. For more information, please go to http://www1.python9.org/p9-hotelinfo.html. ActiveState (www.ActiveState.com) is pleased to launch its first annual Programmer's Choice award for the Python programmer who's actively contributing to the community. Nominate your favorite programmer by February 20, 2001 by going to http://www.ActiveState.com/Awards. The winner will be announced at the Python 9 conference. __________________________________________________________ Sponsors: Platinum Sponsor: ActiveState (www.ActiveState.com) Gold Sponsor: Digital Creations (www.digicool.com) Silver Sponsor: O'Reilly & Associates (www.oreilly.com) Exhibitors: ActiveState (www.ActiveState.com) Digital Creations (www.digicool.com) Archaeopteryx (www.archaeopteryx.com) Perforce Software (www.perforce.com) Irvine Sci-Tech Books (www.scitechbooks.com) --=====================_32641116==_.ALT Content-Type: text/html; charset="us-ascii" Greetings!

The Python 9 conference agenda is now available on-line at http://www1.python9.org/p9-agenda.html.

Python 9 will offer two lunchtime "Birds of a Feather" (BOF) meetings, one on Tuesday, March 6 and one on Wednesday, March 7.  The topic for the Tuesday meeting is "Adding Iterators to Python", and the topic for the Wednesday meeting is "Adding Sets to Python".  To sign up for one or both of these BOFs, please send an email note to:  Iterator-BOF@python9.org and/or Set-BOF@python9.org.  On each day, tables will be reserved for BOF participants at lunchtime, and lunch will be served promptly at 12 Noon.  Following lunch, BOF participants will adjourn to a meeting room for the remainder of the lunch break.  The location of the meeting room will be posted on the bulletin board in the registration area. 

On-line registration for Python 9 closes on Sunday, February 25, 2001.  To register, please go to http://www1.python9.org/p9-reginfo.html.

Rooms at the Hilton Long Beach are no longer available at the special group rate of $134 per night.  However, rooms for Python 9 attendees are now available at the Holiday Inn Downtown Long Beach and the Westin Long Beach hotels at favorable rates. For more information, please go to http://www1.python9.org/p9-hotelinfo.html.

ActiveState (www.ActiveState.com) is pleased to launch its first annual Programmer's Choice award for the Python programmer who's actively contributing to the community.  Nominate your favorite programmer by February 20, 2001 by going to  http://www.ActiveState.com/Awards. The winner will be announced at the Python 9 conference.
__________________________________________________________

Sponsors:
Platinum Sponsor: ActiveState (www.ActiveState.com)
Gold Sponsor: Digital Creations (www.digicool.com)
Silver Sponsor: O'Reilly & Associates (www.oreilly.com)

Exhibitors:
ActiveState (www.ActiveState.com)
Digital Creations (www.digicool.com)
Archaeopteryx (www.archaeopteryx.com)
Perforce Software (www.perforce.com)
Irvine Sci-Tech Books (www.scitechbooks.com) --=====================_32641116==_.ALT-- From beazley@cs.uchicago.edu Mon Feb 12 03:43:32 2001 From: beazley@cs.uchicago.edu (David Beazley) Date: Sun, 11 Feb 2001 21:43:32 -0600 (CST) Subject: O'Reilly Conference - LAST CALL Message-ID: This is the final call for the conference. If you have a topic you would like to present, please submit a proposal (Note: speakers also receive complimentary conference registration). -- Dave ====== FINAL CALL ====== *** CALL FOR PARTICIPATION *** O'Reilly Open Source Convention July 23-27, 2001 San Diego, California *** Python Track *** O'Reilly & Associates is pleased to announce the 3rd annual Open Source Convention. This event is the central gathering place for the Open Source community to exchange ideas, techniques, and to advance the language. The Open Source Convention is a five-day event designed for programmers, developers, and technical staff involved in Open Source technology and its applications. The convention will be held at the Sheraton San Diego Hotel and Marina, San Diego, California, July 23-27, 2001. The program committee of the Python track invites submissions of tutorial and convention presentation on topics of interest to Python programmers. Tutorial Presentations ---------------------- The first two days of the convention are devoted to tutorials. Tutorial proposals must include the following: - Tutorial length (3 or 6 hours) - Target audience including any recommended prerequisites. - What attendees will learn. - Tutorial outline--a short bullet list description of the course itself. - Speaker name - Speaker biography - Complete speaker contact information. The program committee particularly encourages the submission of tutorials that are designed to present core Python topics to a technically sophisticated audience (i.e., tutorials should favor technical depth versus advocacy and high-level overviews). Conference Presentations ------------------------ Convention proposals will be considered for the following types of talks: - Focused discussions related to a specific Python technology or programming technique. Typical examples might include extension building, internationalization, programming with threads, Tkinter, and XML. - New product/technology demonstrations. - Panel discussions. - Applications and case studies that describe the use of Python in real-world applications. Convention proposals must include the following: - Type of talk -- technology, new product, panel, or case-study. - Title of talk or demonstration. - Abstract of talk, maximum of 250 words. - Speaker name. - Speaker biography. - Complete speaker contact information. Submissions of novel and unusual Python applications are particularly encouraged. Presentations by marketing staff or with a marketing focus will not be accepted. Submitting Your Proposal ------------------------ All proposals must be sent to oscon2001-proposals@oreilly.com Proposals should be sent in plain text with no attachments. Submit one proposal per email. The subject line of your email must follow this format: Last name: proposal type: proposal title For example: Johnson: Tutorial: Advanced Python Programming You will receive an automatic confirmation upon receipt of each proposal. Important Dates --------------- Tutorial and presentation proposals due: February 15, 2001 (extended) Notification to presenters : March 1, 2001 Tutorial presentations due : May 1, 2001 Convention presentations due : June 1, 2001 More Information ---------------- More information about the convention can be found at: http://conferences.oreilly.com/oscon2001 Specific questions concerning the Python track can be sent via e-mail to ora-python-pc@cs.uchicago.edu. Python Track Program Committee ------------------------------ Jason Asbahr, Origin/Electronic Arts David Ascher, ActiveState David Beazley, University of Chicago, Chair Paul Dubois, Lawrence Livermore National Laboratory Jeremy Hylton, Digital Creations Andrew Kuchling, MEMS Exchange Fredrik Lundh, Secret Labs AB/PythonWare Tim Peters, Digital Creations Andy Robinson, ReportLab Greg Stein, Technical Advisor, ActiveState Guido van Rossum, Digital Creations Aaron Watters, ReportLab From theller@python.net Thu Feb 15 08:52:04 2001 From: theller@python.net (Thomas Heller) Date: Thu, 15 Feb 2001 09:52:04 +0100 (CET) Subject: [ANN] py2exe - new version Message-ID: <982227124.3a8b98b4a366f@www.ion-tof.com> py2exe is a distutils extension to convert python scripts into standalone windows executables. The URL is: http://starship.python.net/crew/theller/py2exe/ I've released version 0.2.3 of py2exe, which seems pretty stable, although it should still be considered beta. It has been used for creating wxPython, PyGTK, pygame, win32com client and other standalone programs. I would like to thank the early adopters(in alphabetical order) Dan Rolander, Dave Brueck, Franz Geiger, Markus Gritsch, Pete Shinners, Peter Hansen, Robin Dunn, and Wayne Izatt for helpfull suggestions, testing and support. Development will continue. Features planned for the next release(s): - More aggressive way to find dependencies, hopefully making the building process more automatic - COM server support (localserver, inprocserver) Regards, Thomas From mwh21@cam.ac.uk Thu Feb 15 16:55:35 2001 From: mwh21@cam.ac.uk (Michael Hudson) Date: Thu, 15 Feb 2001 16:55:35 +0000 (GMT) Subject: python-dev summary, 2001-02-01 - 2001-02-15 Message-ID: It is with some trepidation that I post: This is a summary of traffic on the python-dev mailing list between Feb 1 and Feb 14 2001. It is intended to inform the wider Python community of ongoing developments. To comment, just post to python-list@python.org or comp.lang.python in the usual way. Give your posting a meaningful subject line, and if it's about a PEP, include the PEP number (e.g. Subject: PEP 201 - Lockstep iteration) All python-dev members are interested in seeing ideas discussed by the community, so don't hesitate to take a stance on a PEP if you have an opinion. This is the first python-dev summary written by Michael Hudson. Previous summaries were written by Andrew Kuchling and can be found at: New summaries will probably appear at: When I get round to it. Posting distribution (with apologies to mbm) Number of articles in summary: 498 80 | ]|[ | ]|[ | ]|[ | ]|[ | ]|[ ]|[ 60 | ]|[ ]|[ | ]|[ ]|[ | ]|[ ]|[ | ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ 40 | ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ 20 | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ | ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ ]|[ 0 +-029-067-039-037-080-048-020-009-040-021-008-030-043-027 Thu 01| Sat 03| Mon 05| Wed 07| Fri 09| Sun 11| Tue 13| Fri 02 Sun 04 Tue 06 Thu 08 Sat 10 Mon 12 Wed 14 A fairly busy fortnight on python-dev, falling just short of five hundred articles. Much of this is making ready for the Python 2.1 release, but people's horizons are beginning to rise above the present. * Python 2.1a2 * Python 2.1a2 was released on Feb. 2. One of the more controversial changes was the disallowing of "from module import *" at anything other than module level; this restriction was weakened after some slightly heated discussion on comp.lang.python. It is possible that non-module-level "from module import *" will produce some kind of warning in Python 2.1 but this code has not yet been written. * Performance * Almost two weeks ago, we were talking about performance. Michael Hudson posted the results of an extended benchmarking session using Marc-Andre Lemburg's pybench suite: to which the conclusion was that python 2.1 will be marginally slower than python 2.0, but it's not worth shouting about. The use of Vladimir Marangoz's obmalloc patch in some of the benchmarks sparked a discussion about whether this patch should be incorporated into Python 2.1. There was support from many for adding it on an opt-in basis, since when nothing has happened... * Imports on case-insensitive file systems * There was quite some discussion about how to handle imports on a case-insensitive file system (eg. on Windows). I didn't follow the details, but Tim Peters is on the case (sorry), so I'm confident it will get sorted out. * Sets & iterators * The Sets discussion rumbled on, moving into areas of syntax. The syntax: for key:value in dict: was proposed. Discussion went round and round for a while and moved on to more general iteration constructs, prompting Ka-Ping Yee to write a PEP entitled "iterators": Please comment! Greg Wilson announced that BOFs for both sets and iterators have been arranged at the python9 conference in March: * Stackless Python in Korea * Christian Tismer gave a presentation on stackless python to over 700 Korean pythonistas: I think almost everyone was amazed and delighted to find that Python has such a fan base. Next stop, the world! * string methodizing the standard library * Eric Raymond clearly got bored one evening and marched through the standard library, converting almost all uses of the string module to use to equivalent string method. * Python's release schedule * Skip Montanaro raised some concerns about Python's accelerated release schedule, and it was pointed out that the default Python for both debian unstable and Redhat 7.1 beta was still 1.5.2. Have *you* upgraded to Python 2.0? If not, why not? * Unit testing (again) * The question of replacing Python's hoary old regrtest-driven test suite with something more modern came up again. Andrew Kuchling enquired whether the issue was to be decided by voting or BDFL fiat: Guido obliged: There was then some discussion of what changes people would like to see made in the standard-Python-unit-testing-framework-elect (PyUnit) before they would be happy with it. Cheers, M. From info@pythonware.com Mon Feb 19 11:42:26 2001 From: info@pythonware.com (PythonWare) Date: Mon, 19 Feb 2001 12:42:26 +0100 Subject: ANN: SRE 2.1a2 (separate distribution) Message-ID: (trying again) Secret Labs' Regular Expression Engine (SRE) is the regular expression engine shipped with Python 1.6 and 2.0. The latest SRE version (from Python 2.1a2) is now available separately: http://www.pythonware.com/products/sre Changes from the 2.0 version include a couple of bug fixes, and improved portability; this version works with Python 1.5.2 and later versions. The distribution includes library source code, and prebuilt Windows binaries for Python 1.5.2 and 2.0. enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From info@pythonware.com Mon Feb 19 11:52:33 2001 From: info@pythonware.com (PythonWare) Date: Mon, 19 Feb 2001 12:52:33 +0100 Subject: ANN: PIL 1.1.1 binaries for Windows Message-ID: at last: Secret Labs now offer "official" PIL builds for Windows. The binary kit is based on 1.1.1, and includes JPEG and PNG support, optional Tkinter support, and a patch for PNG transparency support: http://www.pythonware.com/products/pil Binary kits are available for Python 1.5.2, Python 2.0, and Python 2.1a2 (experimental). The Tkinter binding requires Tcl/Tk 8.2.3 for the 1.5.2 versions, and 8.3.2 for the 2.X versions. The patched PNG driver can be downloaded separately from http://effbot.org. enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From uche.ogbuji@fourthought.com Mon Feb 19 23:40:43 2001 From: uche.ogbuji@fourthought.com (Uche Ogbuji) Date: Mon, 19 Feb 2001 16:40:43 -0700 Subject: ANN: 4Suite and 4Suite Server 0.10.2 Message-ID: <200102192340.QAA21298@localhost.localdomain> Fourthought, Inc. (http://Fourthought.com) announces the release of 4Suite 0.10.2 and 4Suite Server 0.10.2 ---------------------------- Open source XML processing tools and an XML data server http://4Suite.org http://Fourthought.com/4SuiteServer 4Suite News ----------- * ODS: optimized back end * ODS: Better collection support * ODS: DBM and Oracle driver fixes * XSLT: format-number overhaul * XPath: C boolean extension implemented for performance * XPath: Added extension functs search-re, base-uri * RDF: serialization fixes * RDF: shelve (DBM) driver * Localization support * Friendlier error messages * URI handling fixes * Many misc bug-fixes 4Suite Server News ------------------ * Many usability improvements * omniNotify: Removed our implementation of Event Channel and replaced with omniNotify * TxFactory: Rewrote to avoid common race conditions * Strobe: (formerly Reaper) Added a test harness * UserServer: Moved many user specific things out of the common IDL * UserServer: Added a test harness * RdfServer: Now uses system exceptions for common exception cases. * RdfServer: Added a test harness * XmlServer: Allow Raw files * XmlServer: Now uses the standard system exceptions * XmlServer: Added a proper test harness * XmlServer: Added XSLT-based API to 4SS * MetaUserServer: Completed the implementation * MetaUserServer: Added a proper test harness * MetaXmlServer: Completed the implementation * MetaXmlServer: Added a proper test harness * HTTPListener: Added a test harness * HTTPListener: XSLT support * HTTPListener: Custom handler support * webDAV: Incorporated pydav into 4SS * webDAV: Finished initial implementation * All: Renamed interfaces (where approriate) to follow Create/Fetch/Update/Delete naming convention. * All: Added command-line tools * All: Added console * All: Added populate script to bootstrap useful resources * All: More comprehensive documentation * All: Many, many fixes and optimizations 4Suite is a collection of Python tools for XML processing and object database management. It provides support for XML parsing, several transient and persistent DOM implementations, XPath expressions, XPointer, XSLT transforms, XLink, RDF and ODMG object databases. 4Suite Server is a platform for XML processing. It features an XML data repository, a rules-based engine, and XSLT transforms, XPath and RDF-based indexing and query, XLink resolution and many other XML services. It also supports related services such as distributed transactions and access control lists. Along with basic console and command-line management, it supports remote, cross-platform and cross-language access through CORBA, WebDAV, HTTP and other request protocols to be added shortly. 4Suite Server is not meant to be a full-blown application server. It provides highly-specialized services for XML processing that can be used with other application servers. All the software is open-source and free to download. Priority support and customization is available from Fourthought, Inc. For more information on this, see the http://FourThought.com, or contact Fourthought at info@fourthought.com or +1 303 583 9900 More info and Obtaining 4Suite and 4Suite Server ------------------------------------------------ Please see http://4Suite.org http://Fourthought.com/4SuiteServer >From where you can download source, Windows and Linux binaries. 4Suite is distributed under a license similar to that of the Apache Web Server. From amos@digicool.com Tue Feb 20 21:35:45 2001 From: amos@digicool.com (Amos Latteier) Date: Tue, 20 Feb 2001 13:35:45 -0800 Subject: Zope Directions Roadmap Posted Message-ID: Hello Pythoneers, I am excited to announce a Zope Directions Roadmap. http://dev.zope.org/Resources/ZopeDirections.html This document summarizes current thinking at Digital Creations about where the Zope platform is going from an architectural point of view. It summarizes informal conversations that we've been having internally for the past couple months. This paper talks about how we'd like to improve Zope to make it easier for Python developers. It puts some existing initiatives (e.g. Presentation Templates, and the Content Management Framework) in context, and discusses potential future projects like moving to a component architecture. I should point out that this document is not a concrete plan so much as a statement of what's on our minds. Zope development will continue to operate openly in the fishbowl (http://dev.zope.org/). We'd love to hear what you have to say. Are we heading in the right direction? Is there something else that we should be doing instead to help developers? Let us know. (Follow up should be on the zope-dev mailing list.) And when we begin new fishbowl projects (look for a component architecture project soon) jump in and help define Zope's future! -Amos

Zope Directions Roadmap - Paper describing Zope development plans. (20-Feb-2001) -- Amos Latteier mailto:amos@digicool.com Digital Creations http://www.digicool.com From fredrik@pythonware.com Mon Feb 12 09:22:00 2001 From: fredrik@pythonware.com (Fredrik Lundh) Date: Mon, 12 Feb 2001 10:22:00 +0100 Subject: ANN: SRE 2.1a2 (separate distribution) Message-ID: in case you don't want to upgrade Python right now: Secret Labs' Regular Expression Engine (SRE) is the new regular expression engine shipped with Python 1.6 and 2.0. The latest SRE version (from Python 2.1a2) is now available separately: http://www.pythonware.com/products/sre Changes from the 2.0 include a couple of bug fixes, and improved portability: this version also works under Python 1.5.2. The distribution includes library source code, and prebuilt Windows binaries for Python 1.5.2 and 2.0. enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From x@vex.net Sun Feb 18 17:05:05 2001 From: x@vex.net (Parnassus Submission) Date: Sun, 18 Feb 2001 12:05:05 -0500 (EST) Subject: [Module] pysp/0.01 Message-ID: <20010218170505.4D7D357DA@smaug.vex.net> pysp/0.01 --------- A wrapper for the SP SGML parser Provides a very simple event-based interface to the SP SGML parser, allowing SGML processing applications to be written in Python. This release is an experimental release and not particularly well tested. URL: http://www.garshol.priv.no/download/software/pysp/ Download: /download/software/pysp/pysp.zip License: Python Style Requires: SP Categories: Parsing/Formatting Lars Marius Garshol -- pysp/0.01 -- A wrapper for the SP SGML parser From geek+python@cmu.edu Mon Feb 19 16:08:24 2001 From: geek+python@cmu.edu (Brian Gallew) Date: Mon, 19 Feb 2001 11:08:24 -0500 (EST) Subject: [Module] HTML ACL 1.1 Message-ID: <20010219160824.4FF9657FB@smaug.vex.net> HTML ACL 1.1 ------------ CGI access control This class provides a really easy way to add access control to a Python CGI. This if for use in addition to whatever "normal" authentication module you use. In our case, we use Kerberos for authentication, and then this module is used for authorization. This allows the two functions to be easily split. To check access is simple: import html_acl ACL = html_acl.ACL('/path/to/access/storage', None) my_privs = ACL[os.environ['REMOTE_USER']] my_privs now contains a list of "priveleges" that have been granted to the current user. To generate a page which will allow interactive updates to the permission database is almost as easy: import sys, cgi, html_acl print 'Content-Type: text/html\n\n' form = cgi.FieldStorage() ACL = html_acl.ACL('/path/to/access/storage', 'update.py') ACL.update(form, os.environ['REMOTE_USER']) try: dummy = ACL[os.environ['REMOTE_USER']] except: permission_error() # Define this yourself print "\n\n" print ACL print "\n" Suggestions are always welcome. URL: http://www.as.cmu.edu/~geek/transferables/html_acl.html Download: http://www.as.cmu.edu/~geek/transferables/html_acl.py License: Public Domain Requires: cPickle, base64 Categories: CGI Modules Brian Gallew (geek+python@cmu.edu) http://www.as.cmu.edu/~geek -- HTML ACL 1.1 -- CGI access control From djc@object-craft.com.au Thu Feb 22 10:50:36 2001 From: djc@object-craft.com.au (Dave Cole) Date: 22 Feb 2001 21:50:36 +1100 Subject: Sybase module 0.12 (Aki Yamashita release) released Message-ID: --=-=-= What is it: The Sybase module provides a Python interface to the Sybase relational database system. The Sybase package supports almost all of the Python Database API, version 2.0 with extensions. The module works with Python versions 1.5.2 and later and Sybase versions 11.0.3 and later. It is based on the Sybase Client Library (ct_* API), and the Bulk-Library Client (blk_* API) interfaces. Changes: - A bug has been fixed in the bulkcopy object which caused FLOAT columns to be corrupted on transfer to the server. Where can you get it: http://www.object-craft.com.au/projects/sybase/ - Dave -- http://www.object-craft.com.au --=-=-= -- http://www.object-craft.com.au --=-=-=-- From robin@alldunn.com Fri Feb 23 08:00:32 2001 From: robin@alldunn.com (Robin Dunn) Date: Fri, 23 Feb 2001 00:00:32 -0800 Subject: ANNOUNCE: Release 3.0b3 of bsddb3 is available Message-ID: <008901c09d6e$b317d1e0$0100a8c0@Rogue> The Python wrappers for BerkeleyDB 3.1.17 (http://www.sleepycat.com/) are available at http://pybsddb.sourceforge.net/. Berkeley DB is a programmatic toolkit that provides high-performance built-in database support for desktop and server applications. The Berkeley DB access methods include B+tree, Extended Linear Hashing, Fixed and Variable-length records, and Queues. Berkeley DB provides full transactional support, database recovery, online backups, multi-threaded and multi-process access, etc. The Python wrappers allow you to store Python string objects of any length, keyed either by strings or integers depending on the database access method. With the use of another module in the package standard shelve-like functionality is provided allowing you to store any picklable Python object! Changes in this release include the following: * Lots of bugs fixed. * General code cleanup and some refactoring. * Better support for building on many different platforms. * Better build/install docs. * More and better unit tests. * Added DBLock type and methods to DBEnv for acquiring and releasing arbitrary locks. * Partial record reads/writes, and class for doing it in a file-like way. * Classes added for doing lightweight table-like access using a DB for storage. * Various other methods added. The focus of the next release will be support for the recently released BerkeleyDB 3.2.9. -- Robin Dunn Software Craftsman robin@AllDunn.com Java give you jitters? http://wxPython.org Relax with wxPython! From mal@lemburg.com Fri Feb 23 08:06:22 2001 From: mal@lemburg.com (M.-A. Lemburg) Date: Fri, 23 Feb 2001 09:06:22 +0100 Subject: ANN: eGenix.com mx Extensions -- Version 2.0.0 (mxODBC, mxDateTime, ...) Message-ID: <3A9619FE.86D9A03C@lemburg.com> ________________________________________________________________________ ANNOUNCING: eGenix.com mx Extension Series for Python Version 2.0.0 Full Source Python extensions providing important and useful services for Python programmers. ________________________________________________________________________ WHAT IS IT ? The eGenix.com mx Extensions for Python are a collection of professional quality software tools which enhance Python's usability in many important areas such as ODBC database connectivity, fast text processing, date/time processing and web site programming. Python is an open-oriented Open Source programming language which runs on all modern platforms. By integrating ease-of-use, clarity in coding, enterprise application connectivity and rapid application design, Python establishes an ideal programming platform for todays IT challenges. The tools have a proven record of being portable across many Unix and Windows platforms, e.g. you can write applications which use an ODBC database on Windows which then run on Unix platforms without change due to the consistent platforms independent interfaces. All available packages have proven their stability and usefulness in many mission critical applications and various commercial settings all around the world. The two most well-known subpackages from the eGenix.com mx Extension Series are mxDateTime and mxODBC providing date/time services and professional ODBC database connectivity on practically all supported Python platforms. These two packages enable database software which is portable not only across platforms, but also across database backends. ________________________________________________________________________ WHAT'S NEW ? mxODBC, mxDateTime and all other mx packages are now maintained by my new company eGenix.com Software GmbH, Langenfeld in Germany (http://www.egenix.com/). This move will provide a better base for future development and also assures the availability of commercial support, which is important for companies building applications based on the eGenix.com mx Extensions. The new versions of the eGenix.com mx Extensions use the Python 2.0 distutils packaging technology to simplify installation and use of the many different subpackages. This is expected to greatly enhance the installation and usage experience of the software. In additions to many subpackage enhancements, this new release repackages all mx Extensions under a new top-level package named 'mx'. This will allow you to use the subpackages side-by-side with other Python tools using similar names. The software is now delivered in two download archives: the eGenix.com mx BASE package which holds all the Open Source tools from the series and provides the basis for the other add-ons and the eGenix.com mx COMMERCIAL package which currently only contains the mxODBC package. The two packages are covered by the eGenix.com Public License and the eGenix.com Commercial License respectively. Details about the licenses can be found at: http://www.lemburg.com/files/python/mxLicense.html ________________________________________________________________________ SPECIAL OFFER theKompany.com has licensed the COMMERCIAL package (which includes mxODBC) for inclusion in their brand new Qt-based Python IDE BackAdder. It allows developing portable GUI-based database applications which run on Windows and Linux platforms without any change to the source code. BlackAdder includes a 1 CPU license for this package at no extra cost, so you may want to check out their great new product. See http://www.lemburg.com/files/python/eGenix-mx-Extensions.html#BlackAdder for details. ________________________________________________________________________ EGENIX.COM MX BASE PACKAGE OVERVIEW: mxDateTime - Generic Date/Time Types mxDateTime is an extension package that provides three new object types, DateTime, DateTimeDelta and RelativeDateTime, which let you store and handle date/time values in a much more natural way than by using ticks (seconds since 1.1.70 0:00 UTC; the encoding used by the time module). You can add, subtract and even multiply instances, pickle and copy them and convert the results to strings, COM dates, ticks and some other more esoteric values. In addition, there are several convenient constructors and formatters at hand to greatly simplify dealing with dates and times in real-world applications. In addition to providing an easy-to-use Python interface the package also exports a comfortable C API interface for other extensions to build upon. This is especially interesting for database applications which often have to deal with date/time values (the mxODBC package is one example of an extension using this interface). mxTextTools - Fast Text Processing Tools mxTextTools is an extension package for Python that provides several useful functions and types that implement high-performance text manipulation and searching algorithms in addition to a very flexible and extendable state machine, the Tagging Engine, that allows scanning and processing text based on low-level byte-code "programs" written using Python tuples. It gives you access to the speed of C without the need to do any compile and link steps every time you change the parsing description. Applications include parsing structured text, finding and extracting text (either exact or using translation tables) and recombining strings to form new text. mxStack - Fast and Memory-Efficient Stack Type mxStack is an extension package that provides a new object type called Stack. It works much like what you would expect from such a type, having .push() and .pop() methods and focusses on obtaining maximum speed at low memory costs. mxTools - Collection of Additional Builtins mxTools is an extension package that includes a collection of handy functions and objects giving additional functionality in form of new builtins to the Python programmer. The package auto-installs the new functions and objects as builtins upon first import. This means that they become instantely available to all other modules without any further action on your part. Add the line import NewBuiltins to your site.py script and they will be available to all users at your site as if they were installed in the Python interpreter itself. mxProxy - Generic Proxy Wrapper Type mxProxy is an extension package that provides a new type that is suitable to implement Bastion like features without the need to use restricted execution environments. The type's main features are secure data encapsulation (the hidden objects are not accessible from Python since they are stored in internal C structures), customizable attribute lookup methods and a cleanup protocol that helps in breaking circular references prior to object deletion. The latest version adds a very interesting new feature: weak references which help you work with circular references in a way that doesn't cause memory leakage in a Python system. mxBeeBase - On-disk B+Tree Based Database Kit mxBeeBase is a high performance construction kit for disk based indexed databases. It offers components which you can plug together to easily build your own custom mid-sized databases (the current size limit is sizeof(long) which gives you an address range of around 2GB on 32-bit platforms). The two basic building blocks in mxBeeBase are storage and index. Storage is implemented as variable record length data storage with integrated data protection features, automatic data recovery and locking for multi process access. Indexes use a high performance optimized B+Tree implementation built on top of Thomas Niemann's Cookbook B+Tree implementation (http://epaperpress.com/). Note: mxBeeBase is new in this release and still in beta. ________________________________________________________________________ EGENIX.COM MX COMMERCIAL PACKAGE OVERVIEW: mxODBC - Generic ODBC 2.0 interface mxODBC is an extension package that provides a Python Database API compliant interface to ODBC 2.0 capable database drivers and managers. In addition to the capabilities provided through the standard DB API it also gives access to a rich set of catalog methods which allow you to scan the database for tables, procedures, etc. Furthermore, it uses the mxDateTime package for date/time value interfacing eliminating most of the problems these types normally introduce (other in/output formats are available too). The latest version of the interface allows you to interface to more than one database from one process. It includes a varity of preconfigured setups for many commonly used databases such as MySQL, Oracle, Informix, Solid and many more. A precompiled version of the extension for use with the Windows ODBC manager is also included. ________________________________________________________________________ WHERE CAN I GET IT ? The download archives and instructions for installing the packages can be found at: http://www.lemburg.com/files/python/ ________________________________________________________________________ WHAT DOES IT COST ? The BASE packages come 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. All packages come with full source code. mxODBC comes with a new licenses which allows non-commercial use at no charge, but costs a moderate fee for commercial use. Please see http://www.lemburg.com/files/python/eGenix-mx-Extensions.html#mxCOMMERCIAL for details. ________________________________________________________________________ WHERE CAN I GET SUPPORT ? Commercial quality support for these packages is available from eGenix.com Software GmbH. Please see http://www.lemburg.com/files/python/eGenix-mx-Extensions.html#Support for details about the eGenix support offerings. ________________________________________________________________________ REFERENCE:

eGenix.com mx Extension Series - eGenix.com mx Extension Series with distutils support and precompiled binaries for Windows and Linux. (22-Feb-2001) ________________________________________________________________________ ...thanks for reading this far ;-) In the spirit of Python software announcements, I am leaving off for the Python Conference in Long Beach, California tomorrow. If you have any problems with these packages or the downloads, please email me at mal@egenix.com. I will read your mail once I get back from the conference and will do my best make the eGenix.com mx Extensions a success for you. See you at the conference, -- Marc-Andre Lemburg ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Pages: http://www.lemburg.com/python/ From jcollins@endeavors.com Sat Feb 24 00:29:48 2001 From: jcollins@endeavors.com (Jeff Collins) Date: Fri, 23 Feb 2001 16:29:48 -0800 Subject: [ANN] Pippy: Python for the Palm Message-ID: We are pleased to announce the 0.6b release of Pippy, a port of Python to the Palm. Those interested in creating Python-based applications for Palm handheld computers and other devices that use the Palm operating system will find this to be an excellent VM. For more information, please see http://www.endeavors.com/pippy. -- Jeffery D. Collins, Ph.D. Sr. Software Developer Endeavors Technology, Inc. http://www.endeavors.com From gmcm@hypernet.com Sat Feb 24 15:26:26 2001 From: gmcm@hypernet.com (Gordon McMillan) Date: Sat, 24 Feb 2001 10:26:26 -0500 Subject: ANN: Win32 Installer - new release for Python 2 Message-ID: With many, many thanks to Barry Scott, a new release of the Win32 Installer package is here: http://www.mcmillan-inc.com/install1.html Barry found my major boo-boo in the code that resolves a C extension inside a package. He also greatly improved the messages that come out of the runtime when something goes wrong at the top level. And if you're a user of Mark Hammond's stuff, he also made it so, for example, "import pywintypes" automatically finds PyWinTypes20.dll. Also in this release: the fix for builtin modules, and a fix to the analysis of C extensions and dlls. The documentation now has a page of how-tos for common extensions / packages (e.g., Pmw, PIL among others). Background: The Win32 Installer is a sort of compilerless Freeze - a way of distributing Python apps with all the required support built in. It also understands binary resources (.dlls and .pyds) and can package up arbitrary files that your app might require. Old-Python-style license. Contact: gmcm@hypernet.com

Win32 Installer release 3j A compiler-less way of distributing Python 2.0 apps on Windows. (24-Feb-01) - Gordon From guido@digicool.com Sun Feb 25 23:35:09 2001 From: guido@digicool.com (Guido van Rossum) Date: Sun, 25 Feb 2001 18:35:09 -0500 Subject: Python 1.6.1 released to fix GPL incompatibility Message-ID: <200102252335.SAA16130@cj20424-a.reston1.va.home.com> The Corporation for National Research Initiatives has released Python 1.6.1. This is a "bugfix" release for Python 1.6, fixing the GPL-incompatibility of the license. The new 1.6.1 release can be found here: http://www.python.org/1.6.1/ There is great subtlety to GPL compatibility. I refer to the webpages of the Free Software Foundation for an explanation, in particular http://www.gnu.org/philosophy/license-list.html. This change does not imply that Python 2.0 or later versions are now compatible with the GPL. Similar changes to their licenses need to be made there; these are still under negotiation. I'll keep you posted. --Guido van Rossum (home page: http://www.python.org/~guido/) From fredrik@pythonware.com Mon Feb 26 09:04:56 2001 From: fredrik@pythonware.com (Fredrik Lundh) Date: Mon, 26 Feb 2001 10:04:56 +0100 Subject: ANN: xmlrpclib 0.9.9 Message-ID: it's monday. it's release day: Secret Labs' xmlrpclib is a widely popular implementation of the XML-RPC remote call protocol (http://xmlrpc.com). Version 0.9.9 (aka 1.0 beta 1) adds support for XML encodings, Unicode, and safe transports (via https). Get your copy from http://www.pythonware.com/products/xmlrpc enjoy, the pythonware team "Secret Labs -- makers of fine pythonware since 1997." From lightning-talks@python9.org Tue Feb 27 16:13:22 2001 From: lightning-talks@python9.org (Jeremy Hylton) Date: Tue, 27 Feb 2001 11:13:22 -0500 (EST) Subject: Lightning Talks session at Python Conference Message-ID: The Lightning Talks session provides an opportunity for conference attendees to present new or ongoing work and cool ideas. Each talk is five to seven minutes long -- time enough for a one good idea and a few questions. In past years, this session has always been fun. If you would like to give a lightning talk, please send email to lightning-talks@python9.org. Speaker slots are available on a first-come, first-served basis. Jeremy Hylton Lightning Talks session chair From guido@digicool.com Tue Feb 27 08:53:10 2001 From: guido@digicool.com (Guido van Rossum) Date: Tue, 27 Feb 2001 03:53:10 -0500 Subject: Python 1.6.1 released towards GPL incompatibility Message-ID: The Corporation for National Research Initiatives has released Python 1.6.1. This is a "bugfix" release for Python 1.6, fixing a GPL incompatibility in the license. The new 1.6.1 release can be found here: http://www.python.org/1.6.1/ There is great subtlety to GPL compatibility. I refer to the webpages of the Free Software Foundation for an explanation, in particular http://www.gnu.org/philosophy/license-list.html. This change does not imply that Python 2.0 or later versions are now compatible with the GPL. Similar changes to their licenses need to be made there; these are still under negotiation. I'll keep you posted. --Guido van Rossum (home page: http://www.python.org/~guido/) From fog@mixadlive.com Wed Feb 28 12:31:44 2001 From: fog@mixadlive.com (Federico Di Gregorio) Date: Wed, 28 Feb 2001 13:31:44 +0100 Subject: New PostgreSQL Database Adapters: psycopg and ZpsycopgDA Message-ID: Hi *, the guys here at initd (http://initd.org/) arre happy to announce the release of psycopg, a Python/PostgreSQL driver module and ZPsycopgDA, a Zope Database Adapter based on the psycopg driver. Now, I'll answer the questions you asked... (_what_ questions? well... follow me...) Q. Why another postgresql dba? we already have pygres and popy! A. That's true. We had some ideas about a performant, thread-safe driver and we wanted to hack a little bit. the resulting driver is slim, fast, with clean code and some nice features (see below.) Writing a Zope DBA was a logical consequence only because we use it. Q. Should I switch to psycopg and zpsycopgda? A. Not if you are happy with your current driver [and i hope it is popy ;-)] The only real reason is if you want the advanced features you can find only in psycopg: 1/ level-2 thread safety 2/ advanced type-casting system 3/ automatic management of multiple phisical connections to the DB (one per thread) to speed up queries 4/ extremely clean and maintainable code also, in a future release (0.5) zpsycopgda will support db and table management from zope management screens. Q. Hey! you're from MIXAD LIVE, is psycopg a popy fork? A. No, psycopg is 100% clean code. we had some ideas on how a db driver should workin a heavily multithreaded environment and we wanted to test them. that's all. Q. Where can I download it? A. http://initd.org/Software/psycopg (tarball and precompiled debian packages) ciao and good hacking, federico -- Federico Di Gregorio MIXAD LIVE Chief of Research & Technology fog@mixadlive.com Debian GNU/Linux Developer & Italian Press Contact fog@debian.org Qu'est ce que la folie? Juste un sentiment de liberté si fort qu'on en oublie ce qui nous rattache au monde... -- J. de Loctra From benblins@multimania.com Sun Feb 25 10:07:16 2001 From: benblins@multimania.com (Benblins) Date: Sun, 25 Feb 2001 05:07:16 -0500 (EST) Subject: [Module] Serpent 2.0 Message-ID: Serpent 2.0 ----------- Le jeu du serpent ! Vous etes un serpent qui doit attraper des pommes pour grandir, attention a ne pas se mordre !! Vive Python et la benblins.corp, visit ours site web...You want to learn Python, visit www.benblins.com !!! URL: http://www.benblins.com Download: http://www.multimania.com/benblins/python/prog/projethelo01.htm License: GPL Platform: Win32 Requires: only instal it on "c:\" Gui: Tkinter,Win32 Categories: Games Benblins (benblins@multimania.com) www.benblins.com -- Serpent 2.0 -- Le jeu du serpent ! From x@vex.net Mon Feb 26 17:19:55 2001 From: x@vex.net (Parnassus Submission) Date: Mon, 26 Feb 2001 12:19:55 -0500 (EST) Subject: [Module] GuestBook 1.0.0 Message-ID: GuestBook 1.0.0 --------------- Script to manage your own guestbook A simple script to add a guestbook to your website. Totally self contained, doesn't need any non standard modules. URL: http://www.programmedintegration.com/pguestbook.htm Download: http://www.programmedintegration.com/files/guestbook.zip License: Public Domain Platform: Win32, Linux Requires: None Binaries: N/A Gui: N/A Categories: CGI Scripts Colin Meeks -- GuestBook 1.0.0 -- Script to manage your own guestbook From timc@dai.ed.ac.uk Fri Feb 23 16:58:17 2001 From: timc@dai.ed.ac.uk (Tim Colles) Date: Fri, 23 Feb 2001 11:58:17 -0500 (EST) Subject: [Module] Options Message-ID: Options ------- Command line option processor, port of Perl Getopt::Long Processes long and short command line options. Allows multiple iterations through options and values for options which can be set in identifiers. Multiple options can set lists. Also X=Y options can set dictionarys. This is a port of the Perl Getopt::Long module and is functionally identical except for some differences in argument passing and option value setting. URL: http://www.dai.ed.ac.uk/~timc/Options-1.0.tar.gz Download: http://www.dai.ed.ac.uk/~timc/Options-1.0.tar.gz License: GPL Categories: User Interfaces Tim Colles (timc@dai.ed.ac.uk) http://www.dai.ed.ac.uk/~timc/ -- Options -- Command line option processor, port of Perl Getopt::Long