crate-py / rpds

Python bindings to the Rust rpds crate for persistent data structures
https://rpds.readthedocs.io/
MIT License
41 stars 14 forks source link

Support PyO3 0.23 #98

Open ngoldbaum opened 4 days ago

ngoldbaum commented 4 days ago

PyO3 0.23 is coming out soon (hopefully this week).

Supporting it should allow supporting the free-threaded build of Python 3.13 as well.

Here's the compiler error I get if I patch Cargo.toml to point at a local copy of the PyO3 repo with the main branch checked out:

``` Compiling rpds-py v0.21.0 (/Users/goldbaum/Documents/rpds) warning: use of deprecated trait `pyo3::IntoPy`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:50:6 | 50 | impl IntoPy for Key { | ^^^^^^ | = note: `#[warn(deprecated)]` on by default warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:52:20 | 52 | self.inner.into_py(py) | ^^^^^^^ error[E0277]: the `?` operator can only be applied to values that implement `Try` --> src/lib.rs:87:25 | 87 | for each in mapping.items()?.iter()? { | ^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `BoundListIterator<'_>` | = help: the trait `Try` is not implemented for `BoundListIterator<'_>` warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:92:28 | 92 | for each in ob.iter()? { | ^^^^ error[E0277]: the trait bound `Key: PyErrArguments` is not satisfied --> src/lib.rs:135:45 | 135 | None => Err(PyKeyError::new_err(key)), | ------------------- ^^^ the trait `for<'py> IntoPyObject<'py>` is not implemented for `Key`, which is required by `Key: PyErrArguments` | | | required by a bound introduced by this call | = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `Key` to implement `PyErrArguments` note: required by a bound in `PyKeyError::new_err` --> /Users/goldbaum/Documents/pyo3/src/exceptions.rs:439:1 | 439 | impl_native_exception!(PyKeyError, PyExc_KeyError, native_doc!("KeyError")); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | required by a bound in this associated function | required by this bound in `PyKeyError::new_err` = note: this error originates in the macro `$crate::impl_exception_boilerplate_bound` which comes from the expansion of the macro `impl_native_exception` (in Nightly builds, run with -Z macro-backtrace for more info) warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:171:14 | 171 | .into_py(py)), | ^^^^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:179:14 | 179 | .into_py(py)), | ^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:231:28 | 231 | HashTrieMapPy::type_object_bound(slf.py()), | ^^^^^^^^^^^^^^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:248:54 | 248 | Ok(HashTrieMapPy::extract_bound(&value)?.into_py(py)) | ^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:263:26 | 263 | for each in keys.iter()? { | ^^^^ error[E0277]: the trait bound `Key: PyErrArguments` is not satisfied --> src/lib.rs:319:46 | 319 | false => Err(PyKeyError::new_err(key)), | ------------------- ^^^ the trait `for<'py> IntoPyObject<'py>` is not implemented for `Key`, which is required by `Key: PyErrArguments` | | | required by a bound introduced by this call | = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `Key` to implement `PyErrArguments` note: required by a bound in `PyKeyError::new_err` --> /Users/goldbaum/Documents/pyo3/src/exceptions.rs:439:1 | 439 | impl_native_exception!(PyKeyError, PyExc_KeyError, native_doc!("KeyError")); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | required by a bound in this associated function | required by this bound in `PyKeyError::new_err` = note: this error originates in the macro `$crate::impl_exception_boilerplate_bound` which comes from the expansion of the macro `impl_native_exception` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `Key: IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` is not satisfied --> src/lib.rs:350:1 | 350 | #[pymethods] | ^^^^^^^^^^^^ the trait `IntoPyObject<'_>` is not implemented for `Key`, which is required by `Key: IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` | = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `Key` to implement `IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` note: required by a bound in `IterOptionTag::convert` --> /Users/goldbaum/Documents/pyo3/src/impl_/pymethods.rs:495:16 | 489 | pub fn convert<'py, Value>( | ------- required by a bound in this associated function ... 495 | Value: IntoPyCallbackOutput<'py, *mut ffi::PyObject>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `IterOptionTag::convert` = note: this error originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: `Key` cannot be converted to a Python object --> src/lib.rs:387:1 | 387 | #[pymethods] | ^^^^^^^^^^^^ the trait `IntoPyObject<'_>` is not implemented for `Key`, which is required by `(Key, Py): IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` | = note: `IntoPyObject` is automatically implemented by the `#[pyclass]` macro = note: if you do not wish to have a corresponding Python type, implement it manually = note: if you do not own `Key` you can perform a manual conversion to one of the types in `pyo3::types::*` = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `(Key, Py)` to implement `IntoPyObject<'_>` = note: required for `(Key, Py)` to implement `IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` note: required by a bound in `IterOptionTag::convert` --> /Users/goldbaum/Documents/pyo3/src/impl_/pymethods.rs:495:16 | 489 | pub fn convert<'py, Value>( | ------- required by a bound in this associated function ... 495 | Value: IntoPyCallbackOutput<'py, *mut ffi::PyObject>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `IterOptionTag::convert` = note: this error originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:416:29 | 416 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:420:27 | 420 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:429:29 | 429 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:443:29 | 443 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:457:29 | 457 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:461:27 | 461 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:470:29 | 470 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:474:27 | 474 | for each in other.iter()? { | ^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:504:18 | 504 | .into_py(py) | ^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:515:27 | 515 | for each in other.iter()? { | ^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:528:27 | 528 | for each in other.iter()? { | ^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:554:15 | 554 | v.into_py(py) | ^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:592:29 | 592 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:606:34 | 606 | let tuple = PyTuple::new_bound(py, [k.inner.clone_ref(py), v.clone_ref(py)]); | ^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:613:29 | 613 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:618:33 | 618 | let pair = PyTuple::new_bound(py, [k.inner.clone_ref(py), v.clone_ref(py)]); | ^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:628:29 | 628 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:633:33 | 633 | let pair = PyTuple::new_bound(py, [k.inner.clone_ref(py), v.clone_ref(py)]); | ^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:643:29 | 643 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:647:27 | 647 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:652:41 | 652 | let pair = PyTuple::new_bound(py, [k, value.bind(py).clone()]); | ^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:664:29 | 664 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:668:27 | 668 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:673:41 | 673 | let pair = PyTuple::new_bound(py, [k, value.bind(py).clone()]); | ^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:707:27 | 707 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:711:37 | 711 | let pair = PyTuple::new_bound(py, [k, value.bind(py).clone()]); | ^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyTuple::new_bound`: renamed to `PyTuple::new` --> src/lib.rs:728:33 | 728 | let pair = PyTuple::new_bound(py, [k.inner.clone_ref(py), v.clone_ref(py)]); | ^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:731:27 | 731 | for each in other.iter()? { | ^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:747:24 | 747 | for each in ob.iter()? { | ^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:802:18 | 802 | .into_py(py) | ^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:814:29 | 814 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:818:27 | 818 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:846:29 | 846 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:859:29 | 859 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:872:29 | 872 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:876:27 | 876 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:885:29 | 885 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:889:27 | 889 | for each in other.iter()? { | ^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:899:28 | 899 | HashTrieSetPy::type_object_bound(slf.py()), | ^^^^^^^^^^^^^^^^^ error[E0277]: the trait bound `Key: PyErrArguments` is not satisfied --> src/lib.rs:926:46 | 926 | false => Err(PyKeyError::new_err(value)), | ------------------- ^^^^^ the trait `for<'py> IntoPyObject<'py>` is not implemented for `Key`, which is required by `Key: PyErrArguments` | | | required by a bound introduced by this call | = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `Key` to implement `PyErrArguments` note: required by a bound in `PyKeyError::new_err` --> /Users/goldbaum/Documents/pyo3/src/exceptions.rs:439:1 | 439 | impl_native_exception!(PyKeyError, PyExc_KeyError, native_doc!("KeyError")); | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | | | required by a bound in this associated function | required by this bound in `PyKeyError::new_err` = note: this error originates in the macro `$crate::impl_exception_boilerplate_bound` which comes from the expansion of the macro `impl_native_exception` (in Nightly builds, run with -Z macro-backtrace for more info) warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:997:29 | 997 | let iter = each.iter()?; | ^^^^ error[E0277]: the trait bound `Key: IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` is not satisfied --> src/lib.rs:1011:1 | 1011 | #[pymethods] | ^^^^^^^^^^^^ the trait `IntoPyObject<'_>` is not implemented for `Key`, which is required by `Key: IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` | = help: the following other types implement trait `IntoPyObject<'py>`: &&'a T &&OsStr &&Path &&str &'a (T0, T1) &'a (T0, T1, T2) &'a (T0, T1, T2, T3) &'a (T0, T1, T2, T3, T4) and 151 others = note: required for `Key` to implement `IntoPyCallbackOutput<'_, *mut pyo3::ffi::PyObject>` note: required by a bound in `IterOptionTag::convert` --> /Users/goldbaum/Documents/pyo3/src/impl_/pymethods.rs:495:16 | 489 | pub fn convert<'py, Value>( | ------- required by a bound in this associated function ... 495 | Value: IntoPyCallbackOutput<'py, *mut ffi::PyObject>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `IterOptionTag::convert` = note: this error originates in the attribute macro `pymethods` (in Nightly builds, run with -Z macro-backtrace for more info) warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:1039:34 | 1039 | let reversed = PyModule::import_bound(ob.py(), "builtins")?.getattr("reversed")?; | ^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:1040:65 | 1040 | let rob: Bound<'_, PyIterator> = reversed.call1((ob,))?.iter()?; | ^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:1076:15 | 1076 | k.into_py(py) | ^^^^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:1093:14 | 1093 | .into_py(py)), | ^^^^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:1101:14 | 1101 | .into_py(py)), | ^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1145:21 | 1145 | ListPy::type_object_bound(slf.py()), | ^^^^^^^^^^^^^^^^^ warning: use of deprecated method `pyo3::types::PyAnyMethods::iter`: use `try_iter` instead --> src/lib.rs:1234:24 | 1234 | for each in ob.iter()? { | ^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:1255:48 | 1255 | ret.inner.enqueue_mut(each.into_py(py)); | ^^^^^^^ warning: use of deprecated method `pyo3::IntoPy::into_py`: `IntoPy` is going to be replaced by `IntoPyObject`. See the migration guide (https://pyo3.rs/v0.23/migration) for more information. --> src/lib.rs:1319:15 | 1319 | k.into_py(py) | ^^^^^^^ warning: use of deprecated associated function `pyo3::types::PyModule::import_bound`: renamed to `PyModule::import` --> src/lib.rs:1366:25 | 1366 | let abc = PyModule::import_bound(py, "collections.abc")?; | ^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1369:51 | 1369 | .call_method1("register", (HashTrieSetPy::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1372:46 | 1372 | .call_method1("register", (KeysView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1374:48 | 1374 | .call_method1("register", (ValuesView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1376:47 | 1376 | .call_method1("register", (ItemsView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1379:46 | 1379 | .call_method1("register", (KeysView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1381:48 | 1381 | .call_method1("register", (ValuesView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ warning: use of deprecated associated function `pyo3::PyTypeInfo::type_object_bound`: renamed to `PyTypeInfo::type_object` --> src/lib.rs:1383:47 | 1383 | .call_method1("register", (ItemsView::type_object_bound(py),))?; | ^^^^^^^^^^^^^^^^^ For more information about this error, try `rustc --explain E0277`. warning: `rpds-py` (lib test) generated 65 warnings error: could not compile `rpds-py` (lib test) due to 7 previous errors; 65 warnings emitted ```

It looks like almost all of the errors are related to the introduction of IntoPyObject and the removal of the gil-refs API so hopefully most of these will be straightforward to fix. I don't see anything related to the new Sync trait bound 0.23 adds to pyclasses, so that's good.

Julian commented 3 days ago

Thanks for the issue / analysis! Definitely appreciated.

I'm not sure I'll have any time to look into this for the next few weeks, so a PR (from anyone) is definitely welcome, otherwise hopefully will have a look at some point.

ngoldbaum commented 3 days ago

I'm planning to take a look at this.

Julian commented 3 days ago

That would be amazing, thanks Nathan!

ngoldbaum commented 3 days ago

I created https://github.com/crate-py/rpds/pull/100, I'll follow up once 0.23 is finalized.