-
Notifications
You must be signed in to change notification settings - Fork 875
Description
At the moment the protocol methods are in an inconsistent state: some of them can take PyRef
or PyRefMut
, and some of them take &self
or &mut self
.
This is confusing to users and also gets in the way in certain cases like needing to access Python
inside a protocol method (which can be obtained from PyRef::py()
for example) or wanting to return PyRef<Self>
.
The simple solution is to just change all protocol methods to use TryFromPyCell
trait. This is however a breaking change.
The better solution is to change all #[pyproto]
methods to support any of the five of &PyCell
, PyRef<Self>
, PyRefMut<Self>
, &self
and &mut self
, just like we support for #[pymethods]
.
I've had some ideas how to approach this second point so would like to take a shot at it soon.