1# mode: run 2# ticket: 470 3 4 5def func(**kwargs): 6 """ 7 >>> func(**{'a' : 7}) 8 True 9 >>> func(**SubDict()) 10 True 11 >>> func(**NonDict()) 12 True 13 """ 14 return type(kwargs) is dict and kwargs['a'] == 7 15 16 17class NonDict(object): 18 def __getitem__(self, k): 19 assert k == 'a' 20 return 7 21 def keys(self): 22 return ['a'] 23 24def call_non_dict_test(): 25 """ 26 >>> call_non_dict_test() 27 True 28 """ 29 return func(**NonDict()) 30 31def call_non_dict_test_kw(): 32 """ 33 >>> call_non_dict_test_kw() 34 True 35 """ 36 return func(b=5, **NonDict()) 37 38 39class SubDict(dict): 40 def __init__(self): 41 self['a'] = 7 42 43def call_sub_dict_test(): 44 """ 45 >>> call_sub_dict_test() 46 True 47 """ 48 return func(**SubDict()) 49 50def call_sub_dict_test_kw(): 51 """ 52 >>> call_sub_dict_test_kw() 53 True 54 """ 55 return func(b=5, **SubDict()) 56