self.assertEqual(getitem(dct2, 'a'), 1)
self.assertEqual(getitem(dct2, 'b'), KeyError)
+ frozendct = frozendict(dct)
+ self.assertEqual(getitem(frozendct, 'a'), 1)
+ self.assertEqual(getitem(frozendct, 'b'), KeyError)
+ self.assertEqual(getitem(frozendct, '\U0001f40d'), 2)
+
self.assertEqual(getitem(['a', 'b', 'c'], 1), 'b')
self.assertRaises(TypeError, getitem, 42, 'a')
self.assertEqual(getitemstring(dct2, b'a'), 1)
self.assertEqual(getitemstring(dct2, b'b'), KeyError)
+ frozendct = frozendict(dct)
+ self.assertEqual(getitemstring(frozendct, 'a'), 1)
+ self.assertEqual(getitemstring(frozendct, 'b'), KeyError)
+ self.assertEqual(getitemstring(frozendct, '\U0001f40d'.encode()), 2)
+
self.assertRaises(TypeError, getitemstring, 42, b'a')
self.assertRaises(UnicodeDecodeError, getitemstring, {}, b'\xff')
self.assertRaises(SystemError, getitemstring, {}, NULL)
dict_obj = {'foo': 1, 'bar': 2, 'spam': 3}
for mapping in [{}, OrderedDict(), Mapping1(), Mapping2(),
+ frozendict(),
dict_obj, OrderedDict(dict_obj),
- Mapping1(dict_obj), Mapping2(dict_obj)]:
+ Mapping1(dict_obj), Mapping2(dict_obj),
+ frozendict(dict_obj)]:
self.assertListEqual(_testlimitedcapi.mapping_keys(mapping),
list(mapping.keys()))
self.assertListEqual(_testlimitedcapi.mapping_values(mapping),
int
PyMapping_GetOptionalItem(PyObject *obj, PyObject *key, PyObject **result)
{
- if (PyDict_CheckExact(obj)) {
+ if (PyAnyDict_CheckExact(obj)) {
return PyDict_GetItemRef(obj, key, result);
}
if (o == NULL) {
return null_error();
}
- if (PyDict_CheckExact(o)) {
+ if (PyAnyDict_CheckExact(o)) {
return PyDict_Keys(o);
}
return method_output_as_list(o, &_Py_ID(keys));
if (o == NULL) {
return null_error();
}
- if (PyDict_CheckExact(o)) {
+ if (PyAnyDict_CheckExact(o)) {
return PyDict_Items(o);
}
return method_output_as_list(o, &_Py_ID(items));
if (o == NULL) {
return null_error();
}
- if (PyDict_CheckExact(o)) {
+ if (PyAnyDict_CheckExact(o)) {
return PyDict_Values(o);
}
return method_output_as_list(o, &_Py_ID(values));