[storm] Storm 0.18 is out!

Jamu Kakar jkakar at kakar.ca
Tue Oct 26 22:53:08 BST 2010


Hi Gary,

*Big kudos* to you for taking on the task of releasing this version of
Storm, thanks a lot for stepping up and making this release happen!

Thanks,
J.

On Tue, Oct 26, 2010 at 5:44 PM, Gary Poster <gary.poster at canonical.com> wrote:
> The Storm team is proud to announce Storm 0.18!
>
> The new release includes a number of new features:
>
>  * Storm includes (optional) code to manage and migrate database schemas
>  * storm.zope.testing added testresources
>   (https://edge.launchpad.net/testresources) support
>  * TimeoutErrors include messages to describe why the Timeout was raised
>
> 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:
>
>  https://edge.launchpad.net/~storm/+archive/ppa
>
> You can find the release files at:
>
>  https://launchpad.net/storm/+download
>
> You can always get the latest source code from Launchpad:
>
>  bzr branch lp:storm
>
> Finally, you can join us in the #storm channel on irc.freenode.net
> and on the Storm mailing list:
>
>  https://lists.canonical.com/mailman/listinfo/storm
>
> Read on for more...
>
>
> Code to manage and migrate database schemas
> -------------------------------------------
>
> 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``:
>
>>>> from storm.schema import Schema
>>>> creates = ['CREATE TABLE person (id INTEGER, name TEXT)']
>>>> drops = ['DROP TABLE person']
>>>> deletes = ['DELETE FROM person']
>>>> import patch_package
>>>> schema = Schema(creates, drops, deletes, patch_package)
>>>> schema.upgrade(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.
>
> storm.zope.testing added testresources support
> ----------------------------------------------
>
> 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::
>
>    from testresources import ResourcedTestCase
>    from storm.zope.testing import ZStormResourceManager
>    from storm.schema import Schema
>
>    name = "test"
>    uri = "sqlite:"
>    schema = Schema(...)
>    manager = ZStormResourceManager({name: (uri, schema)})
>
>    class MyTest(ResourcedTestCase):
>
>        resources = [("zstorm", manager)]
>
>        def test_stuff(self):
>            store = self.zstorm.get("test")
>            store.execute(...)
>
> 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.
>
> Detailed 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.
> --
> storm mailing list
> storm at lists.canonical.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/storm
>



More information about the storm mailing list