[issue3276] httplib.HTTPConnection._send_request should not blindly assume dicts for headers

Irit Katriel report at bugs.python.org
Sun Jun 20 19:05:01 EDT 2021


Irit Katriel <iritkatriel at gmail.com> added the comment:

Indeed, as Terry wrote the assumption is that header is a mapping (not necessarily a dict). It is not hard to implement a Multimap that has this API:

import collections.abc

class Multimap(collections.abc.Mapping):
    def __init__(self):
        self.data = collections.defaultdict(list)

    def __getitem__(self, key):
        return self.data[key]

    def __setitem__(self, key, value):
        self.data[key].append(value)

    def __iter__(self):
        yield from self.data

    def items(self):
        for k in list(self.data.keys()):
            for v in list(self.data[k]):
                yield (k,v)

    def __len__(self):
        return sum([len(v) for v in self.data.values()])

mm = Multimap()
mm['1'] = 'a'
mm['1'] = 'aa'
mm['1'] = 'aaa'
mm['2'] = 'b'
mm['3'] = 'c'
mm['3'] = 'cc'
print(f'len = {len(mm)}')
print(f'mm.items() = {list(mm.items())}')

Output:
len = 6
mm.items() = [('1', 'a'), ('1', 'aa'), ('1', 'aaa'), ('2', 'b'), ('3', 'c'), ('3', 'cc')]

----------
nosy: +iritkatriel
resolution: out of date -> not a bug
stage:  -> resolved
status: open -> closed

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue3276>
_______________________________________


More information about the Python-bugs-list mailing list