[PEAK] PEAK 0.5a3 released

Phillip J. Eby pje at telecommunity.com
Mon Feb 16 18:13:13 EST 2004

After several months of feature creep, the third alpha release of PEAK 0.5 
is now available for download at:


Some highlights of the changes since 0.5a2 include:

* A simplified and consolidated binding API: there are now only four kinds 
of bindings (Make, Obtain, Require, and Delegate) that provide a wider 
variety of functionality than the old API.  You can also now create your 
own IRecipe or IComponentKey implementations for use with Make and Obtain.

* The 'n2' (namespace navigator) tool provides a handy, extensible shell 
(with completion and history) for exploring PEAK naming systems and SQL 

* A greatly enhanced configuration file parser, with lots of new 
convenience features such as [Import on Demand], [Named Services], and 
[Component Factories] sections, based on its new extensible parsing 
framework.  You can define new section types of your own, even from inside 
an .ini file.

* New configuration key features, such as multi-keys (similar to some of 
Zope X3's "adaptergeddon" features), the ability to iterate over defined 
keys in a hierarchy (useful for finding/registering various kinds of 
"plugins"), new convenience features for defining wildcard property rules,

* A new 'peak.events' framework that supports event sources, listeners, 
subscriptions, generator-based pseudothreads ("tasks"), scheduling, and I/O 
events.  Using 'peak.events', you can write event-driven code in a more 
natural, sequential, "untwisted" style, but without giving up access to 
Twisted's many great features.  'peak.events' can use PEAK's built-in event 
loop, or adapt a Twisted reactor for use as an event loop.  You can also 
use Twisted's "Deferred" objects as event sources, which means you can use 
them in your Tasks (pseudothreads).

* A new 'peak.ddt' "document-driven testing" framework, similar in form and 
function to the FIT ( http://fit.c2.com/ ) framework, but in Python and 
well-integrated with the rest of PEAK.  'peak.ddt' lets you write test data 
as tables in HTML documents (created with Word, Open Office, Mozilla, or 
virtually any other tool), and then view the results in your 
browser.  Correct results are highlighted in green, incorrect answers are 
highlighted in red, and errors are highlighted in yellow, with a small-font 
traceback added to the table cell.  It's a great way to do data-driven 
acceptance testing, or to manage a project's progress using example data as 
part of a requirements document.

* Many, many more features, both large and small, like a pre-forking 
multiprocess supervisor for FastCGI and other forking servers.  Quick 
access to documentation via the 'peak help' command, which uses pydoc to 
display reference documentation.  Early versions of the 'peak.security' 
(access control), 'peak.web' (Zope X3-based web publishing), and 
'peak.query' (declarative relational and conceptual queries w/SQL 
generation) packages.  The 'whenImported()' function that lets you call a 
hook when a named module is first used.  "Mock" DBAPI and socket 
implementations for testing.  Hooks for "thunking" database-specific SQL 
and functions.  And many, many more examples of unbelievably blatant 
feature creep!

There is also now a nice "Hello World" introduction to PEAK available at:


that presents a guided tour of some of PEAK's "vertical" frameworks, like 
command-line application support, database access, and so on.

For more information about PEAK, and access to community resources 
including documentation, the Wiki, mailing list archives, IRC channel logs, 
CVS access, and more, please visit:


More information about the PEAK mailing list