On 6/8/2010 2:18 AM, Terry Reedy wrote:
On 6/7/2010 6:03 PM, Peter Otten wrote:The following experiment shows that you only need to implement a keys() and __getitem__() method. $ cat kw.py class A(object): def keys(self): return list("ab") def __getitem__(self, key): return 42 def f(**kw): print(kw) f(**A()) $ python kw.py {'a': 42, 'b': 42} However, if you have A inherit from dict... $ cat kwd.py class A(dict): def keys(self): return list("ab") def __getitem__(self, key): return 42 def f(**kw): print(kw) f(**A()) $ python kwd.py {} it stops working -- probably a side-effect of some optimization. So if you change your hubDict's base class from dict to object you should get the desired behaviour.In 2.6, the requirement changed from '(subclass of) dictionary' to 'mapping' so this is a bit strange. It sort of looks like a bug. I will test with 3.1 tomorrow (later today, actually).
Verified and report filed at http://bugs.python.org/issue8945 Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
