+"""
+The :class:`pyutils.collectionz.bidict.BiDict` class is a subclass
+of :py:class:`dict` that implements a bidirectional dictionary. That
+is, it maps each key to a value in constant time and each value back
+to the one or more keys it is associated with in constant time. It
+does this by simply storing the data twice.
+
+Sample usage::
+
+ # Initialize with a normal dict...
+ third_party_wierdos = BiDict({
+ 'prometheus-fastapi-instrumentator': 'prometheus_fastapi_instrumentator',
+ 'scikit-learn': 'sklearn',
+ 'antlr4-python3-runtime' : 'antlr4',
+ 'python-dateutil': 'dateutil',
+ 'speechrecognition': 'speech_recognition',
+ 'beautifulsoup4': 'bs4',
+ 'python-dateutil': 'dateutil',
+ 'homeassistant-api': 'homeassistant_api',
+ })
+
+ # Use in one direction:
+ x = third_party_wierdos['scikit-learn']
+
+ # Use in opposite direction:
+ y = third_party_wierdos.inverse['python_dateutil']
+
+ # Note: type(y) is List since one value may map back to multiple keys.
+
+"""