Terry J. Reedy <tjre...@udel.edu> added the comment:
Serhiy, nosying you because Ammar identified your commit as relevant. https://github.com/python/cpython/commit/e036ef8fa29f27d57fe9f8cef8d931d4122d8223 --- 3.6 is also security-fix only. Normally, code bug reports need a minimal, reproducible, initially-failing test case that only uses the stdlib, not 3rd party code. A test case would have to include a simplified version of a multidict. The problem here is that a multidict with duplicate keys is not a proper mapping, in spite of having a MutableMapping interface. (Just curious, what does d['a'] return?). The purpose of the package is to meet the needs of HTTP Headers and URL query strings (and other situations) where the 'keys' are value-type tags, not true mapping keys. Another example would be a bibliography entry that tags each of multiple author names with 'Author:'. (Aside: A deficiency of git (github) is allowing only 1 author key and only one github username as the value.) Is an object with duplicate keys legal for **expression in calls? https://docs.python.org/3/reference/expressions.html#index-48 says that expression must evaluate to a 'mapping'. The glossary entry https://docs.python.org/3/glossary.html#term-mapping says "A container object that supports arbitrary key lookups and implements the methods specified in the Mapping or MutableMapping abstract base classes." followed by unique-key examples. To me, 'key lookup' implies unique keys. The Mapping functions include 'keys' and 'items'. What signature? To return set-like views, the keys should be unique. If we take the call to be a bug, is CPython *obligated* to immediately raise an exception? In other words, must every call with **mapping take the time to check for duplicates because someone might pass a dup-key 'mapping'. ---------- nosy: +serhiy.storchaka, terry.reedy stage: -> test needed versions: +Python 3.7, Python 3.8 -Python 3.6 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue35634> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com