PyO3 / pyo3

Rust bindings for the Python interpreter
https://pyo3.rs
Other
11.44k stars 693 forks source link

fix `__dict__` on Python 3.9 with limited API #4251

Closed davidhewitt closed 2 weeks ago

davidhewitt commented 2 weeks ago

Found in CI trying to merge #4194

It looks like we knew about this in test cases already; when I originally implemented #[pyclass(dict)] for abi3 in #1342 I set these test cases to be ignored.

The problem is that PyObject_GenericGetDict doesn't exist in the limited API until Python 3.10. In this PR, instead of omitting the attribute we build a basic implementation of PyObject_GenericGetDict which works for our need.

davidhewitt commented 2 weeks ago

Thanks for the review, I'll try to address all points tonight 👍