Raymond Hettinger <raymond.hettin...@gmail.com> added the comment:

Hmm, I'm looking through the bidict code a bit more.  Rather than saying the 
dict views are being used in an unsupported way, it is more accurate to say 
that your intended meaning for the *mapping* attribute differs from the 
published meaning.

Note, the implementation is already skating on thin ice.  The values() call 
unexpectedly returns an instance of dict_keys().  At first, I was surprised 
that this got past the type checker -- you can do set operations with KeysView 
but not with a ValuesView.

    >>> b.values()
    dict_keys([1, 2])

One suggestion is to document *mapping* do exactly what it currently does.  The 
mappingproxy means that you aren't promising a specific upstream 
implementation.   

Also consider that bidict could guarantee the meaning of *mapping* and its 
underlying store.  This would allow users to make fast conversions to other 
mapping types:

    # This is weird, but useful. 
    # It might be nice to guarantee it.
    >>> OrderedDict(b.values().mapping)
    >>> OrderedDict([(1, 'a'), (2, 'b')])

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45670>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to