add PyDictProxy, see #221
The mappingproxy functions are defined as static in https://github.com/python/cpython/blob/3.7/Objects/descrobject.c#L806 and tbh, dunno what's the point is with _Py_IDENTIFIER(keys) and _PyObject_CallMethodId for example in mappingproxy_keys so went directly to the source in abstracts by checking _Py_IDENTIFIER(keys) in https://github.com/python/cpython/blob/088b63ea7a8331a3e34bc93c3b873c60354b4fad/Tools/c-analyzer/known.tsv#L1212 etc.. https://github.com/python/cpython/blob/4a21e57fe55076c77b0ee454e1994ca544d09dc0/Objects/abstract.c#L2303
Anyway, everything works as expected and so on.
Usage
let attrs = pyobject.getattr(py, "__dict__").unwrap()
.cast_into::<PyDictProxy>(py).unwrap()
let items = attrs.items(py).cast_into::<PySequence>(py).unwrap();
Thanks for the contribution!
I think I understand this, but could you add some more comments in the commit message (and ideally improve the commit title, too, so that it fits in more with the other commits in the repo).
Python 2.7 is still a supported platform for now (e.g. Mercurial uses it). Can you make the corresponding changes in python27-sys, please?