v0.4 7th April 2012
  - The dip.shell module has been rewritten.
  - The dip.ui module has been substantially rewritten and split into dip.ui,
    dip.pui and dip.toolkits.
  - The observer methods of dip.model.Trigger, dip.model.TypeFactory and
    dip.ui.Action (used as a decorator) have been removed as they do not work
    in all common cases.  The dip.model.observe decorator should be used
    instead.
  - Added the dip.model.Singleton class.
  - Added the dip.model.get_attribute_types function.
  - Added the dip.model.notify_observers function.
  - All the dip.model.ValueTypeFactory __init__ methods now support the
    allow_none, getter and setter arguments.
  - A limited form of adapter chaining is now supported.
  - The 'adapt' and 'cache' arguments have been added to adapter factories.

v0.3 7th June 2011
  - The dip.automation module and the dip-automate script have been added.
  - It is now possible to bind existing GUI's (i.e. those created manually or
    with Qt Designer) to a model.  It is no longer necessary to use the
    declarative functionality of the dip.ui module.
  - @implements now checks that an implementation contains all methods defined
    by an interface.
  - The dip.model.isadapted() function will check if an object has been adapted
    to an interface without creating an adapter as a side effect.
  - The dip.ui.DirectorySelector has been removed and its functionality merged
    with the dip.ui.FileSelector class.
  - A view factory will now always create a QWidget sub-class.  It is no longer
    necessary to pass the 'widget' argument to ensure a QWidget (rather than a
    QLayout) is created.
  - Default delegate editors have been added for the Int, Float, Bool and Enum
    types.
  - The IMessageArea interface has been added and the requirement that a
    message area is a QLabel has been removed.
  - ComboBox is now the default editor factory for the Enum type instead of
    RadioButtons.
  - The dip.ui.Wrapper class has been removed.
  - The dip.ui.CollectionToolButtons class has been renamed to
    CollectionButtons.
  - The dip.ui.AddToolButton class has been renamed to AddButton.
  - The dip.ui.RemoveToolButton class has been renamed to RemoveButton.
  - The dip.ui.UpToolButton class has been renamed to UpButton.
  - The dip.ui.DownToolButton class has been renamed to DownButton.
  - Editors are now views in their own right and there is no longer any need to
    place them in an explicit view.
  - The dip.model.Tuple class was added.

v0.2 8th September 2010
  - Python v2.6 and v2.7 are now supported.
  - Attribute observers are now only invoked if an attribute has actually
    changed.
  - Attribute observers are now passed an AttributeChange instance that fully
    describes the change to the attribute.
  - The _default_xxx() methods for identifying a method for providing an
    attribute's default value have been replaced by a type's 'default'
    decorator.
  - The _get_xxx() methods for identifying a method to be used as an
    attribute's getter have been replaced by a type's 'getter' decorator.
  - The _set_xxx() methods for identifying a method to be used as an
    attribute's setter have been replaced by a type's 'setter' decorator.
  - The _observe_xxx() methods for identifying a method to be used as an
    implicit observer of an attribute have been replaced by a type's 'observer'
    decorator.
  - Support for automatically invoking type factories has been removed.  For
    example, 'attribute = Str()' must be used instead of 'attribute = Str'.
  - Support for automatically invoking view item factories has been removed.
    For example, 'MessageArea()' must be used instead of 'MessageArea'.
  - 'Adaptor' has been renamed 'Adapter' throughout dip.
  - The dip.model.BaseType class has been renamed to TypeFactory.
  - The dip.model.ValueType class has been renamed to ValueTypeFactory.
  - The dip.model.ContainerType class has been renamed to ContainerTypeFactory.
  - The dip.model.MutableType class has been renamed to MutableTypeFactory.
  - The dip.model.ValueTypeFactory.default() method has been replaced by the
    __call__() method.
  - dip.model.ModelType has been removed as it is now equivalent to
    Instance(TypeFactory).
  - dip.model.TypeSpecificationError has been removed.
  - MetaInterface and MetaModel are now part of the dip.model API.
  - dip.plugins.Plugin now implements IPlugin so that sub-classes don't have
    to.
  - The default pickle protocol used is v2.

v0.1 17th July 2010
  - The first release.
