- first public release
- added support for comparing filtered objects;
__pk__()object method no longer honored. Seetests/test_mfs_diff.pyfor examples - MultiFieldSelector can now be traversed by indexing, and supports
the
inoperator, with individual indices or FieldSelector objects as the member. Seetests/test_selector.pyfor examples. extraneousdiff option now customizable via theDiffOptionssub-class API.
- enhancement to diff to allow custom, per-field normalization of values before comparison
- Some inconsistancies in JSON marshalling in were fixed
- the return value from
coercefunctions is now checked against the type constraints (isaandcheckproperties) - added capability of Property constructor to dynamically mix variants
as needed; Almost everyone can now use plain
Property(),ListProperty(), or a shorthand typed property declaration (likeStringProperty()); other properties likeSafeandLazywill be automatically added as needed. Property types such asLazySafeJsonPropertyare no longer needed and were savagely expunged from the codebase. SafePropertyis now only a safe base class forPropertysub-classes which have type constraints. Uses ofmake_property_typewhich did not add type constraints must be changed toPropertytype, or will raiseexc.PropertyTypeMixNotFound- bug fix for pickling
JsonRecordclasses - filtering objects via
MultiFieldSelector.get(obj)now works forJsonRecordclasses. - The
AttributeErrorraised when an attribute is not defined now includes the full name of the attribute (class + attribute)
- much work on the diff mechanisms, results, and record identity
- records which set a tuple for
isanow work properly on stringification - semi-structured exceptions (
normalize.exc) - the collections 'tuple protocol' (which models all collections as a sequence of (K, V) tuples) was reworked and made to work with more cases, such as iterators and generators.
- Added
DatePropertyandDatetimeProperty