moellus - a rich and soft layer on Durus -------------------------------------------------------------------------------- Copyright (C) 2005 Mario Ruggier, All rights reserved Author: Mario Ruggier, mario@ruggier.org URL: http://ruggier.org/software/moellus/ License: GNU LGPL, http://www.gnu.org/copyleft/lesser.html -------------------------------------------------------------------------------- $Id: CHANGES.txt 134 2005-11-15 09:34:33Z mario $ -------------------------------------------------------------------------------- 0.5.1 (2005-11-15) - Standard distutils installation. - PersistentContainer.rebuild_index() now shrinks cache after each chunk of item processing, where chunk size is based connection cache size (for large containers). - Experimental PersistentContainer.repair_index(), that commits on each chunk. PersistentContainer.rebuild_indices() will use this if is called with the new keyword parameter repair=True. - Initial use of durus.logger.log. - Added keyword parameters repair=False, cache_size=8000 to ConnectionCache.get_connection(). - Added PersistentContainer methods that accept index_key='id' parameter: iteritems(), iterkeys(), itervalues(), items(), keys(), values(). - Added PersistentContainer methods: __iter__(), __contains__(). - New "bulk" parameter, default False, for PersistentContainer.add_item() to skip over non-essential costly operations (setting index entries for new item, invalidating computed attrs). 0.5.0 (2005-10-09) - Automatic processing of inheritance of the attr/cattr/enums dict magic attributes, handling also entries whose overloaded definition may be switched (attr <-> cattr). - Correct problem with enum attrs, when creating a persistent_item and the an enum attr is not actually specified as a named keyword to the constructor. - Clearer exception when a class with a cattr of typ='cls' does not supply the required class attribute. - Replace own code with BTree.has_key() and BTree.clear() (Durus 3.0). 0.4.1 (2005-07-12) - Correct problematic PersistentItem.__cmp__(), that is now domain-stable. - utils.clone_db() now works for databases that contain instances whose keybinding value tuple itself contains other instances of PersistentItem. This support is recursive, so supported depth of this nesting is arbitrary. 0.4 (2005-07-08) - PersistentContainer now stores its items in a BTree instead of PersistentList. This implies that any index declared on the container (e.g. the default one based on the item's keybindings) is also a BTree. - New optional init parameter for PersistentContainer, mimimum_degree, that will determine which node constructor to use for all the BTrees used by the container (primary one for storage of items, and one per index). - Implementation of automatic invalidation of all affected cattrs when a source value or item is modified or added. Note: as a consequence, a new container must be committed before items can be added to it. - Changes to an Item's schema involving addition of new attrs/cattrs are handled automatically, i.e. all items previously persisted are automatically modified (this will however still require a manual commit()). On the other hand, removal of an attr/cattr from an Item's schema is "cleaned" up from previously existing items by simply cloning the db. - New: PersistentContainer._imappings = PersistentDict() for cleaner and more flexible handling of intermediate computed mappings. - New: PersistentItem.__cmp__(), to handle stable comparisons between PersistentItems, required for BTree keys to work properly. - Different property getters, for simple attrs and for enum attrs, to reduce runtime access overhead for the non-enum general case. - Source items taken in consideration by the predefined 'inv/1:1' cattr may originate from across multiple containers. - Added convenience utility: utils.rebuild_indices_db(db) 0.3 (2005-06-23): - First Public Release