[ANN] Storm 0.10

Christopher Armstrong radix at twistedmatrix.com
Wed Aug 8 23:27:24 CEST 2007

I'm pleased to announce the 0.10 release of Storm, the Python
object-relational mapper.

Web site: http://storm.canonical.com/
Downloads: https://launchpad.net/storm/+download
Cheeseshop: http://pypi.python.org/pypi/storm/0.10

Thanks go to Gustavo Niemeyer, Johan Dahlin, Elliot Murphy, Bjørn
Stabell, Duncan McGreggor, Thomas Herve, Michel Pelletier, Jamu Kakar,
and everyone else who has had a part in this release (in case I missed

This release has various feature enhancements and bug fixes. Detailed
changes follow.

 - Improvements were made to the tutorial.
 - There is now a setup.py script for installing Storm.
 - Count and ClassAlias is now available through the storm.locals
 - A new hook, __storm_pre_flush__, can be implemented on objects in a
   Store. It is called before an object is flushed to the
 - Storm can now use the built-in sqlite support in Python 2.5 and
 - There is now a storm.properties.Decimal, which allows you to store
   Decimal (as opposed to binary) floating point values.
 - storm.zope was added, which offers a simple integration mechanism
   with the Zope transaction machinery.
 - Complex expressions other than simple Columns can now be passed to
   the aggregation methods of ResultSet (avg,max,min,sum).
 - Backend implementors can now override preset_primary_key on their
   Database object to come up with primary key values before an
 - A large amount of API documentation was added.

Bug fixes
 - SQL reserved words are now properly escaped in SQL
 - GROUP BY and ORDER BY statements are now ordered correctly.
 - Running the tests with trial now works.
 - All backends are now initialized such that their transactions are
   truly SERIALIZABLE. Psycopg2 and Pysqlite2 both did not previously
   have serializable transactions by default, but this has been fixed.
 - A bug in ResultSet.cached which could occasionally cause
   inconsistencies in ResultSet.set was fixed.

API Changes

Most changes are backwards compatible. There were some incompatible
changes which may affect alternative database backends.

 - Chars was renamed to RawStr. Chars still exists, but is
   deprecated. All raw 8-bit data in your database should be
   represented with RawStr.
 - compiler handlers have had their arguments reordered.
 - The Compile.__call__ method now returns only the Statement.
 - Compile.fork was renamed to Compile.create_child.
 - Many methods which previously had underscores were renamed to get
   rid of the underscores to reflect their status as things which can
   be safely touched in subclasses. Documentation was added clarifying
   their intended use.

Christopher Armstrong
International Man of Twistery

More information about the Python-announce-list mailing list