- Implement BidirectionalMapping.__subclasshook__ in terms of
Mapping.__subclasshook__ to simplify and correct its implementation.
- Add new test_class_relationships.py tests.
- Import collections ABCs from .compat. Importing them directly from
collections was deprecated and will stop working in Python 3.8.
In Python 2 collections.abc does not exist.
- rename util.py -> _util.py
- Use __slots__ to speed up attribute access and decrease memory usage
(adding _SlotPickleMixin to preserve pickleability)
- "Code review nav" comments
- Remove _clear from frozenbidict, leaving only the public `clear` methods on
the mutable bidict types. Much clearer now! (ducks)
- Improve `pop` and `popitem` signatures. No need for them to take *args/**kw.
- Make bidict extend MutableMapping directly rather than registering it as a
virtual subclass. Leave a comment explaining that it inherits
MutableMapping's setdefault implementation now that it isn't added manually.
- Make the DuplicationPolicy class just a namespace holding
RAISE, OVERWRITE, and IGNORE, not a _Marker itself.
Make RAISE, OVERWRITE, and IGNORE just _Markers, not `DuplicationPolicy`s.
- Various other code and docs improvements.