Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support PyO3 0.23 #98

Closed
ngoldbaum opened this issue Nov 11, 2024 · 5 comments
Closed

Support PyO3 0.23 #98

ngoldbaum opened this issue Nov 11, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@ngoldbaum
Copy link
Contributor

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<PyObject> 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<pyo3::PyAny>): 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<pyo3::PyAny>)` to implement `IntoPyObject<'_>`
    = note: required for `(Key, Py<pyo3::PyAny>)` 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
Copy link
Member

Julian commented Nov 12, 2024

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.

@Julian Julian added the enhancement New feature or request label Nov 12, 2024
@ngoldbaum
Copy link
Contributor Author

I'm planning to take a look at this.

@Julian
Copy link
Member

Julian commented Nov 12, 2024

That would be amazing, thanks Nathan!

@ngoldbaum
Copy link
Contributor Author

I created #100, I'll follow up once 0.23 is finalized.

@ngoldbaum
Copy link
Contributor Author

Fixed by #100

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants