0.8.1
=====

- Bug fix for compatibility.deprecated decorator. Was breaking baldr when handling classes.
- Some documentation fixes.

0.8
===
- Added key_fields to resource meta options. This allows definition of which field(s) are used to uniquely identify the
  resource.
- Added support to TraversalPath (and ResourceTraversalIterator) for using key_fields, both generating and traversing a
  Resource tree.
- CodecDecodeError and CodecEncodeError now inherit off CodecError.
- TraversalPath now raises multiple error types InvalidPathError, NoMatchError, and MultipleMatchesError
- Some additional tweaks to inspect tool, as of now is still only available to Python 3.
- Additional test cases.

0.7
===

- Python 3.5 added for Travis CI test runner
- Added empty flag to ListOf and DictOf files to validate if fields is allowed to be empty
- Added key_choices to DictOf field to allow allow keys to be validated
- Added TypedDictField this is a analog of the TypedListField but for dict objects
- Project is now owned by the python-odin group
- Initial work on combined string serialisation framework. This is to unify text serialisation support between the
  various codecs so additional serialises only need to be registered in a central location.
- Added DictCodec, this is codec for converting between a dict structure and resource structure. As Resource.to_dict
  is explicitly designed to not act in a recursively this codec fills in a gap where a developer my require a nested
  dict to be generated.
- Initial implementation of resource filtering. Filtering allows for a filter expression to be defined and used to
  filter a list of resources or ensure a particular resource matches the expression. Expressions are easy to define and
  read and allow for filtering against sub-resources etc.
- Added caching to the results of mapping operations. Previously iterating through a mapping multiple times caused the
  mapping to be re-run. This has been made the default behaviour, if the previous behaviour is desired the MappingResult
  class can be provided to Mapping.apply instead of CachingMappingResult.
- ResourceAdapter.apply_to now caches Meta object of matching resources types, previously a new meta object was created
  for each resource.
- ResourceAdapterOptions.virtual_fields is now filtered using include/exclude options.
- More tests, more docs
- Various bug fixes.

0.6
===

Odin
----

- Changed the generated type name for mapping factory to ensure a more unique name.
- Pass through excluded_fields when generating types in mapping factory.
- Added ignored fields parameter to be provided to Resource.convert_to method.
- Added included fields parameter to the Mapping.update method
- Updated the ResourceAdapter interface to match that of a normal Resource, can now be used in place of a Resource with
  any codec.
- Added ResourceAdapter.apply_to method that simplifies applying a resource adapter to a list of Resources.
- Updated create_resource_from_dict to accept a list and return a list of resources.
- Fixed bug in auto-mapping generation of MapListOf fields to set the to_list flag correctly
- Added forward_mapping_factory a shortcut version of mapping_factory when only a forward mapping is required.
- Added the assign (similar to the define shortcut) shortcut for defining an assignment mapping
- Fixed a bug where performing a full clean on a Resource that was created via a mapping would fail when a
  MappingResult object was encountered.
- Added ResourceOptions.element_field_map for use in XML codecs
- Added container flag and ResourceOptions.container_fields for XML style codecs
- Large number of documentation updates
- Fixed bug where Mapping.loop_idx was not being updated correctly, after 2 levels of nesting the wrong index was being
  updated.

Sphinx Integration
------------------

- Add max length into resource documentation
- Added description to validators that can be used in sphinx documentation
