This release includes official packages for all supported releases
of Ubuntu except 10.10. 10.10 packages will be added after problems with
Storm's release machinery are sorted out. The packages are available in the
Storm team's PPA:

The new ``storm.schema`` package includes a generalized version of the code
used by the Landscape team for their schemas.

The ``Schema`` class can be used to ``create``, ``drop``, ``delete`` and
``upgrade`` database schemas. A ``Store`` may have a single schema. The
schema is defined by the series of SQL statements that should be used to
create, drop and clear the schema, respectively; and by a patch package used
to upgrade it.

A patch package is simply a Python package that contains files for each patch
level in the series. Each file must be named ``patch_N.py``, where ``N`` is
the numeric version of the patch in the series (using ascending natural
numbers). The patch files must define an ``apply`` callable taking a
``Store`` instance as its only argument. This will be called when the patch
gets applied.

Here's an example, where ``patch_package`` is a Python module
containing database patches used to upgrade the schema over time, and
``store`` is a Storm ``Store``:

While you can use the schema's ``create`` method separately, ``upgrade`` is
sufficient alone. It will create the schema if it does not exist, and
otherwise will run unapplyed patches to an existing schema. Note that this
approach therefore expects the "creates" SQL (that is, the second line of the
example above) to be maintained alongside patches--it should be *equivalent*
to running all patches.

If you would like to use testresources
(https://edge.launchpad.net/testresources) with your Storm tests, a
storm.zope.testing.ZStormResourceManager class to manage a set of stores
registered with ZStorm is now available. It can be used roughly like this::

Comparable expressions (such as Column and Alias) provide new
startswith(), endswith() and contains_string() methods. These
methods perform prefix, suffix and substring comparisons using LIKE.
Strings used with these methods are automatically escaped.

Changelog

View the full changelog

Improvements
------------
- Include code to manage and migrate database schemas. See the
storm.schema sub-package (bug #250412).
- Added a storm.zope.testing.ZStormResourceManager class to manage a
set of stores registered with ZStorm (bug #618704).
- When a TimeoutError is raised it includes a description about why
the exception was raised, to help make it easier to reason about
timeout-related issues (bug #617973).
- Improved the IResultSet interface to document the rationale of why some
attributes are not included (bug #659883).

Bug fixes
---------
- Make storm compatible with psycopg2 2.2 (bug #585704).
- Fix bug #620615, which caused lazy expressions to cause subsequent
loading of objects to explode if unflushed.
- Fix bug #620508, which caused slicing a ResultSet to break subsequent
count() calls.
- Fix bug #659708, correcting the behavior of the sqlobject is_empty
and __nonzero__ methods.
- Fix bug #619017, which caused __storm_loaded__ to be called without
its object's variables defined if the object were in the alive cache but
disappeared.