rust-cpython icon indicating copy to clipboard operation
rust-cpython copied to clipboard

add PyDictProxy, see #221

Open jruiss opened this issue 5 years ago • 1 comments

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();

jruiss avatar Apr 25 '20 07:04 jruiss

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?

markbt avatar May 13 '20 20:05 markbt