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

Reply via email to