Bump package version 0.2.3
Merge branch 'next' into 'master'

Conflicts:
	setup.py
Test existing behavior w.r.t. diff & filtered objects
Fix MultiFieldSelector stringification

Both of these methods had a bug.  Test that both the informal and the
source representation stringification methods behave.
MultiFieldSelector: allow traversing using dict indexing

Allow a MultiFieldSelector to be more easily passed down into a visitor
function by supporting __getattr__ and __contains__
identify: allow record_id to work on filtered objects

Allow record_id to be passed the MultiFieldSelector in effect for the
current object.  This allows a simple fallback to 'all extant properties'
if one or more of the primary key columns is filtered out by the selector.
Implement checking FieldSelector against MultiFieldSelector

This lets you check whether a given FieldSelector is included in the fields
that a MultiFieldSelector includes.
Allow diff to take a MultiFieldSelector to restrict compared fields

This new diff option has two effects on diff:

1. comparison of filtered fields is skipped (meaning you don't need to make
   a filtered object before comparison)

2. "primary key" object settings are invalidated if any of the primary key
   fields are filtered out.  This allows the code to fall back to comparing
   objects by value when comparing collections.
Bump version for release
Doc fixes

No extra docs for this release :-(
Fix list comprehension

How this even worked at all for the tests already is beyond my own
comprehension.
Bump version for fury release
Merge pull request #35 from samv/diff-filtering

Diff filtering
Apply diff options to 'record_id' function

When comparing filtered objects, declared primary keys can become
invalidated.  This ends up surfacing differences between "" and None and
not set, when membership in collections falls back to using the entire
value of members.  There are effectively still two sections of code which
deal with comparison: one is the recursive functions: compare_record_iter
etc, and the other is the collection comparison function used in
compare_collection_iter.  The latter is essentially an optimization, so
that hashing can be used.  The "correct" alternative would be an O(N²) loop
which diff's members in the collections with other members until it finds
ones which are the same.  Instead of doing this, it's possible to pass the
value reduction functions into record_id(), so let's do that.
Merge pull request #36 from samv/diff-filtered-with-empty-slots

Add support ignore_empty_slots, normalize_slot and diff
Bump version for release
Fix an exception during Visitor usage

There's a couple of logic errors here; a use of uninitialized
variable and passing the wrong variable into map().  This class
needs more tests...
Docs for 0.4

More blurb about Records.
Move the 'extraneous' selection into a DiffOptions method

The main use case for this is a diff where some extraneous properties
should not be compared, but some should.  ie: 'unknown_json_keys' are
extraneous by default, but you might want to know that the diff mechanism
will always compare them without the other side effects of treating them as
regular properties (eg, including them on serialization out).  'extraneous'
is quite a large switch, really: and this helps make it more fine-grained.
Licensing, Changelog and other release engineering for PyPI release