- Also refactor and improve hypothesis tests.
- Add a test that ordered bidict nodes have no reference cycles.
- Enable coverage on Travis for PyPy 2 now that there is a code path
that is only taken on PyPy 2 (for FrozenOrderedBidict.iteritems).
- Restore running tests on Travis for all commits, not just for master.
- Docs:
- OrderedBidict: "What if my Python version has order-preserving dicts?"
- Equivalent but distinct Hashables: better code example demonstrating
that this even occurs with a bidict and its own inverse.
- Refactor _dedup_item, _write_item, and _undo_write methods to use
higher-level abstractions (_DedupResult and _WriteResult classes).
- Add internal _OnDup class to bundle (on_dup_key, on_dup_val, on_dup_kv)
together into a single abstraction. Signatures of methods like _put and
_update are cleaner as a result.
- Add the "_NOOP" _DedupResult abstraction.
- Make _Marker extend namedtuple, no need for it to be mutable.
- Enable the pylint messages that were disabled now that the code is cleaner.
- Make DuplicationPolicy extend _Marker and make RAISE, OVERWRITE, and
IGNORE instances of DuplicationPolicy once again. This time deprecate
access via DuplicationPolicy.(IGNORE|RAISE|OVERWRITE) to prevent
infinite chaining.
- Misc. code and docs improvements.
- Make initializing (or updating an empty bidict) from only another
BidirectionalMapping more efficient (skip dup checking).
- Fix accidental ignoring of specified base_type when (un)pickling
namedbidicts.
- Fix incorrect inversion of some_named_bidict.inv.[fwdname]_for
and some_named_bidict.inv.[invname]_for
- Only warn when unsupported Python version is detected.
- More tests.
including:
- simplify type hierarchy, merging the frozen types into the base types
- upgrade to latest hypothesis (3.38.0)
- use Reversible for order-sensitive FrozenOrderedBidict.__eq__
- fix bug where bidict._on_dup_kv was not set to ON_DUP_VAL as documented
- drop leading underscore from attrs that should be public
- improve setup.py/metadata
- rename DuplicationBehavior -> DuplicationPolicy
- drop ON_DUP_VAL duplication policy in preference to just using None
- reduce ordered bidict memory usage and speed up copy
- support Python 3.6, refactor CI/test setup, increase test coverage
- refactor BidirectionalMapping, BidictBase, OrderedBidictBase,
FrozenBidictBase, and subclasses
- move frozenorderedbidict into _frozen and looseorderedbidict into _loose
- register bidict as a virtual subclass of MutableMapping rather than
inheriting from it directly. This makes it clearer that it does not use any
of the concrete generic methods that MutableMapping provides.
- improve performance and flexibility of frozenbidict and
frozenorderedbidict hashing
- docs, including new type-hierarchy.png diagram
- rm unused imap, ifilter, izip_longest from compat, add PYPY
- update to latest versions of dependencies
- restore benchmarking on travis