Skip to content

Update pyo3 to v0.22 and update code to use pyo3 Bound types #680

Update pyo3 to v0.22 and update code to use pyo3 Bound types

Update pyo3 to v0.22 and update code to use pyo3 Bound types #680

Triggered via pull request July 7, 2024 07:32
Status Failure
Total duration 1m 35s
Artifacts

rust.yml

on: pull_request
Matrix: tests
Fit to window
Zoom out
Zoom in

Annotations

50 errors and 27 warnings
the trait bound `&pyo3::prelude::PyModule: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::prelude::PyModule>>` is not satisfied: src/lib.rs#L410
error[E0277]: the trait bound `&pyo3::prelude::PyModule: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::prelude::PyModule>>` is not satisfied --> src/lib.rs:410:1 | 410 | #[pymodule] | ^^^^^^^^^^^ the trait `std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::prelude::PyModule>>` is not implemented for `&pyo3::prelude::PyModule`, which is required by `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::prelude::PyModule>: std::convert::Into<_>` | = note: required for `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::prelude::PyModule>` to implement `std::convert::Into<&pyo3::prelude::PyModule>` = note: this error originates in the attribute macro `pymodule` (in Nightly builds, run with -Z macro-backtrace for more info)
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L421
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:421:7 | 421 | m.add_class::<Inventory>()?; | ^^^^^^^^^ method not found in `&PyModule`
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L419
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:419:7 | 419 | m.add_class::<NodeInfo>()?; | ^^^^^^^^^ method not found in `&PyModule`
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L418
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:418:7 | 418 | m.add_class::<NodeInfoMeta>()?; | ^^^^^^^^^ method not found in `&PyModule`
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L416
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:416:7 | 416 | m.add_class::<CompatFlag>()?; | ^^^^^^^^^ method not found in `&PyModule`
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L415
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:415:7 | 415 | m.add_class::<Config>()?; | ^^^^^^^^^ method not found in `&PyModule`
no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope: src/lib.rs#L413
error[E0599]: no method named `add_class` found for reference `&pyo3::prelude::PyModule` in the current scope --> src/lib.rs:413:7 | 413 | m.add_class::<Reclass>()?; | ^^^^^^^^^ method not found in `&PyModule`
the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied: src/lib.rs#L342
error[E0277]: the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied --> src/lib.rs:342:35 | 342 | pub fn set_thread_count(_cls: &PyType, count: usize) { | ^ the trait `std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not implemented for `&pyo3::types::PyType`, which is required by `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>: std::convert::Into<_>` | = note: required for `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>` to implement `std::convert::Into<&pyo3::types::PyType>`
the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied: src/lib.rs#L314
error[E0277]: the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied --> src/lib.rs:314:26 | 314 | fn from_config(_cls: &PyType, config: Config) -> PyResult<Self> { | ^ the trait `std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not implemented for `&pyo3::types::PyType`, which is required by `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>: std::convert::Into<_>` | = note: required for `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>` to implement `std::convert::Into<&pyo3::types::PyType>`
the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied: src/lib.rs#L298
error[E0277]: the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied --> src/lib.rs:298:14 | 298 | cls: &PyType, | ^ the trait `std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not implemented for `&pyo3::types::PyType`, which is required by `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>: std::convert::Into<_>` | = note: required for `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>` to implement `std::convert::Into<&pyo3::types::PyType>`
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/types/mapping.rs#L359
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/types/mapping.rs:359:28 | 359 | let dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
no method named `get_type` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L164
error[E0599]: no method named `get_type` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:164:23 | 164 | value.get_type().name()? | ^^^^^^^^ method not found in `&PyAny`
no method named `extract` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L157
error[E0599]: no method named `extract` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:157:31 | 157 | let v = value.extract::<f64>()?; | ^^^^^^^ method not found in `&PyAny`
no method named `extract` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L153
error[E0599]: no method named `extract` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:153:31 | 153 | let v = value.extract::<bool>()?; | ^^^^^^^ method not found in `&PyAny`
no method named `downcast` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L141
error[E0599]: no method named `downcast` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:141:34 | 141 | let dict = value.downcast::<PyDict>()?; | ^^^^^^^^ method not found in `&PyAny`
no method named `downcast` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L133
error[E0599]: no method named `downcast` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:133:31 | 133 | let v = value.downcast::<PySequence>()?; | ^^^^^^^^ method not found in `&PyAny`
no method named `extract` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L129
error[E0599]: no method named `extract` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:129:31 | 129 | let v = value.extract::<&str>()?; | ^^^^^^^ method not found in `&PyAny`
no method named `get_type` found for reference `&pyo3::PyAny` in the current scope: src/types/from.rs#L127
error[E0599]: no method named `get_type` found for reference `&pyo3::PyAny` in the current scope --> src/types/from.rs:127:21 | 127 | match value.get_type().name()? { | ^^^^^^^^ method not found in `&PyAny`
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/node/nodeinfo.rs#L192
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/node/nodeinfo.rs:192:28 | 192 | let dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/node/nodeinfo.rs#L180
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/node/nodeinfo.rs:180:28 | 180 | let dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/inventory.rs#L89
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/inventory.rs:89:36 | 89 | let reclass_dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/inventory.rs#L83
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/inventory.rs:83:34 | 83 | let nodes_dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope: src/inventory.rs#L80
error[E0599]: no function or associated item named `new` found for struct `pyo3::types::PyDict` in the current scope --> src/inventory.rs:80:28 | 80 | let dict = PyDict::new(py); | ^^^ function or associated item not found in `PyDict` | = help: items from traits can only be used if the trait is implemented and in scope note: `list::List` defines an item `new`, perhaps you need to implement it --> src/list/mod.rs:6:1 | 6 | pub trait List { | ^^^^^^^^^^^^^^
the trait bound `&pyo3::types::PyDict: pyo3::impl_::extract_argument::PyFunctionArgument<'_, '_>` is not satisfied: src/config.rs#L286
error[E0277]: the trait bound `&pyo3::types::PyDict: pyo3::impl_::extract_argument::PyFunctionArgument<'_, '_>` is not satisfied --> src/config.rs:286:17 | 286 | config: &PyDict, | ^ the trait `pyo3::PyClass` is not implemented for `&pyo3::types::PyDict`, which is required by `&pyo3::types::PyDict: pyo3::impl_::extract_argument::PyFunctionArgument<'_, '_>` | = help: the following other types implement trait `pyo3::impl_::extract_argument::PyFunctionArgument<'a, 'py>`: &'a Reclass &'a config::CompatFlag &'a config::Config &'a inventory::Inventory &'a mut Reclass &'a mut config::CompatFlag &'a mut config::Config &'a mut inventory::Inventory and 6 others = note: required for `&pyo3::types::PyDict` to implement `pyo3::FromPyObject<'_>` = note: required for `&pyo3::types::PyDict` to implement `pyo3::conversion::FromPyObjectBound<'_, '_>` = note: required for `&pyo3::types::PyDict` to implement `pyo3::impl_::extract_argument::PyFunctionArgument<'_, '_>` note: required by a bound in `pyo3::impl_::extract_argument::extract_argument` --> /home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/pyo3-0.22.1/src/impl_/extract_argument.rs:119:8 | 113 | pub fn extract_argument<'a, 'py, T>( | ---------------- required by a bound in this function ... 119 | T: PyFunctionArgument<'a, 'py>, | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `extract_argument`
the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied: src/config.rs#L284
error[E0277]: the trait bound `&pyo3::types::PyType: std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not satisfied --> src/config.rs:284:15 | 284 | _cls: &PyType, | ^ the trait `std::convert::From<pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>>` is not implemented for `&pyo3::types::PyType`, which is required by `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>: std::convert::Into<_>` | = note: required for `pyo3::impl_::pymethods::BoundRef<'_, '_, pyo3::types::PyType>` to implement `std::convert::Into<&pyo3::types::PyType>`
`&pyo3::types::PyDict` is not an iterator: src/config.rs#L301
error[E0277]: `&pyo3::types::PyDict` is not an iterator --> src/config.rs:301:23 | 301 | for (k, v) in config { | ^^^^^^ `&pyo3::types::PyDict` is not an iterator | = help: the trait `std::iter::Iterator` is not implemented for `&pyo3::types::PyDict`, which is required by `&pyo3::types::PyDict: std::iter::IntoIterator` = note: required for `&pyo3::types::PyDict` to implement `std::iter::IntoIterator`
tests (macos-latest): src/config.rs#L301
`&PyDict` is not an iterator
tests (macos-latest): src/config.rs#L284
the trait bound `&PyType: From<BoundRef<'_, '_, PyType>>` is not satisfied
tests (macos-latest): src/config.rs#L286
the trait bound `&PyDict: PyFunctionArgument<'_, '_>` is not satisfied
tests (macos-latest): src/inventory.rs#L80
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (macos-latest): src/inventory.rs#L83
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (macos-latest): src/inventory.rs#L89
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (macos-latest): src/node/nodeinfo.rs#L180
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (macos-latest): src/node/nodeinfo.rs#L192
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (macos-latest): src/types/from.rs#L127
no method named `get_type` found for reference `&pyo3::PyAny` in the current scope
tests (macos-latest): src/types/from.rs#L129
no method named `extract` found for reference `&pyo3::PyAny` in the current scope
tests (ubuntu-latest)
The job was canceled because "macos-latest" failed.
tests (ubuntu-latest): src/config.rs#L301
`&PyDict` is not an iterator
tests (ubuntu-latest): src/config.rs#L284
the trait bound `&PyType: From<BoundRef<'_, '_, PyType>>` is not satisfied
tests (ubuntu-latest): src/config.rs#L286
the trait bound `&PyDict: PyFunctionArgument<'_, '_>` is not satisfied
tests (ubuntu-latest): src/inventory.rs#L80
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (ubuntu-latest): src/inventory.rs#L83
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (ubuntu-latest): src/inventory.rs#L89
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (ubuntu-latest): src/node/nodeinfo.rs#L180
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (ubuntu-latest): src/node/nodeinfo.rs#L192
no function or associated item named `new` found for struct `PyDict` in the current scope
tests (ubuntu-latest): src/types/from.rs#L127
no method named `get_type` found for reference `&pyo3::PyAny` in the current scope
tests (ubuntu-latest): src/types/from.rs#L129
no method named `extract` found for reference `&pyo3::PyAny` in the current scope
lints
could not compile `reclass-rs` (lib) due to 27 previous errors; 1 warning emitted
lints
Clippy had exited with the 101 exit code
benchmarks
Unhanded error: Error: The process '/home/runner/.cargo/bin/cargo' failed with exit code 101
use of deprecated constant `config::CompatFlag::__pyo3__generated____richcmp__::DEPRECATION`: Implicit equality for simple enums is deprecated. Use `#[pyclass(eq, eq_int)` to keep the current behavior.: src/config.rs#L14
warning: use of deprecated constant `config::CompatFlag::__pyo3__generated____richcmp__::DEPRECATION`: Implicit equality for simple enums is deprecated. Use `#[pyclass(eq, eq_int)` to keep the current behavior. --> src/config.rs:14:1 | 14 | #[pyclass] | ^^^^^^^^^^ | = note: `#[warn(deprecated)]` on by default = note: this warning originates in the attribute macro `pyclass` (in Nightly builds, run with -Z macro-backtrace for more info)
tests (macos-latest)
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1, actions-rs/cargo@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
tests (macos-latest)
The following actions uses Node.js version which is deprecated and will be forced to run on node20: actions-rs/toolchain@v1, actions-rs/cargo@v1. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
tests (macos-latest): src/config.rs#L14
use of deprecated constant `config::CompatFlag::__pyo3__generated____richcmp__::DEPRECATION`: Implicit equality for simple enums is deprecated. Use `#[pyclass(eq, eq_int)` to keep the current behavior.
tests (macos-latest)
`reclass-rs` (lib) generated 1 warning
tests (macos-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (macos-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (macos-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (macos-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (ubuntu-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (ubuntu-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (ubuntu-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (ubuntu-latest)
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
tests (ubuntu-latest): src/config.rs#L14
use of deprecated constant `config::CompatFlag::__pyo3__generated____richcmp__::DEPRECATION`: Implicit equality for simple enums is deprecated. Use `#[pyclass(eq, eq_int)` to keep the current behavior.
tests (ubuntu-latest)
`reclass-rs` (lib) generated 1 warning
lints
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1, actions-rs/cargo@v1, actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
lints
The following actions uses Node.js version which is deprecated and will be forced to run on node20: actions-rs/toolchain@v1, actions-rs/cargo@v1, actions-rs/clippy-check@v1. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
lints
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
lints
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
lints
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
lints
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
benchmarks
The following actions uses node12 which is deprecated and will be forced to run on node16: actions-rs/toolchain@v1. For more info: https://github.blog/changelog/2023-06-13-github-actions-all-actions-will-run-on-node16-instead-of-node12-by-default/
benchmarks
The following actions uses Node.js version which is deprecated and will be forced to run on node20: actions-rs/toolchain@v1, boa-dev/criterion-compare-action@v3. For more info: https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/
benchmarks
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
benchmarks
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
benchmarks
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/
benchmarks
The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/