[storm] Announcing Storm 0.15!
Jamu Kakar
jkakar at kakar.ca
Sat Aug 8 04:42:26 BST 2009
The Storm team is proud to announce Storm 0.15!
The new release includes a number of new features:
* New GenerationalCache object cache
* New ResultSet.find method and other improvements
* New Neg and Coalesce expressions
* Python 2.6 is supported
* New Ubuntu packages
Read on for more...
New GenerationalCache object cache
----------------------------------
A new GenerationalCache is available. It can be used in place of
the default Cache and will likely become the default in the future.
You can use it by passing it as a parameter to Store:
from storm.locals import Store, create_database
from storm.cache import GenerationalCache
uri = "<uri>"
store = Store(create_database(uri), GenerationalCache())
Also note that the default cache size has been increased from 100
objects to 1000. Please try the new cache and report your results
to mailing list.
New ResultSet.find method and other improvements
------------------------------------------------
The new ResultSet.find method works just like ReferenceSet.find. It
takes a list of expressions and uses them to filter the items in the
original result:
result = store.find(Foo, Foo.bar == 42)
result = result.find(Foo.baz > 7)
In addition to the new find, ResultSet.set works with expressions and
ResultSet.remove returns the number of rows that were deleted.
New Neg and Coalesce expressions
--------------------------------
The new Neg expression prepends a minus sign to the expression it
wraps, providing unary minus. The new Coalesce expression takes an
arbitrary number of columns and calls the COALESCE function with
them.
Python 2.6 is supported
-----------------------
Python 2.6 is now fully supported with all tests passing. In
addition, Storm's C extension compiles for python 2.4, 2.5 and 2.6.
The PostgreSQL backend now requires pyscopg2 2.0.7 or newer.
New Ubuntu packages
-------------------
This release includes official packages for all supported releases
of Ubuntu. They 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
As always, you can join us in channel #storm on irc.freenode.net and
on the storm mailing list:
https://lists.canonical.com/mailman/listinfo/storm
Detailed changelog
------------------
Improvements:
* Add support for latest version on Django by not checking arguments
passed to _cursor.
* Added support for using Expressions with ResultSet.set().
* The default cache size was changed from 100 to 1000 objects.
* Added the new GenerationalCache with a faster implementation of
the caching API (by Jeroen Vermeulen). This will likely become
the default implementation in the future, so please test it if
possible.
* A new UUID property type has been added. It depends on the uuid
module introduced in Python 2.5 to represent values.
* The StoreDataManager now gets passed a transaction manager from the
ZStorm utility. This will make it easier to support non-default
transaction managers in the future.
* An adapter is now available for converting ISQLObjectResultSet
objects to IResultSet. This is intended to help in gradual porting
SQLObject applications to Storm's native API (bug #338184, by Gavin
Panella).
* If a disconnection occurs outside of Storm's control, a
DisconnectionError will still be raised next time the connection is
used through Storm. This is useful if the connection is being
shared with another framework like Django (bug #374909).
* The PostgreSQL backend now requires psycopg2 >= 2.0.7. The work
around for broken quoting behaviour in older psycopg2 versions has
been removed. (bug #322206).
* A new Neg expression is available. It provides unary minus by
prepending a minus sign to whatever expression is passed to it
(bug #397654 by Michael Hudson).
* A new Coalese expressions is available.
* ResultSets now have a find(). It acts similar to Store.find(), but
without the first argument (it uses the same classes as the original
result), and only returns results found in the original result set.
(bug #338255).
* Result.rowcount exposes the number of rows affected by the
query, when known.
* ResultSet.remove returns the number of rows deleted from the database.
(bug #180122).
Bug fixes:
* The fix for ResultSet.count() on distinct results from last release
has been improved, and the fix has been extended to the other
aggregates. This may change the result of some count(), min(),
max(), sum() and avg() calls for results using distinct, limit or
offset.
* The test suite now passes when run with Python 2.6.
* ListVariable now converts its elements to database representation
correctly (bug #136806 reported by Marc Tardif).
* compile_python now works for values that don't produce valid Python
expressions with repr().
* The C extension should now build under Windows.
More information about the storm
mailing list