From 17fabbf178d266a811f8eba3075831f1b1533871 Mon Sep 17 00:00:00 2001 From: Jacob Date: Tue, 14 Jul 2026 20:50:07 -0400 Subject: [PATCH] chore: eliminate all usage of `pyo3::prelude::*` --- arbitrary-value/src/arbitrary.rs | 4 ++-- arbitrary-value/src/map_key.rs | 4 ++-- entrypoint/src/lib.rs | 6 +++++- home-assistant/src/event/context/context.rs | 5 ++++- home-assistant/src/event/event.rs | 2 +- home-assistant/src/event/event_origin.rs | 3 ++- home-assistant/src/home_assistant.rs | 5 +++-- home-assistant/src/light/attributes.rs | 2 +- home-assistant/src/light/mod.rs | 2 +- home-assistant/src/light/protocol.rs | 2 +- home-assistant/src/logger.rs | 17 ++++++++++------- home-assistant/src/service_registry.rs | 6 ++++-- home-assistant/src/state_machine.rs | 2 +- home-assistant/src/state_object.rs | 6 +++--- python-utils/src/lib.rs | 3 ++- 15 files changed, 42 insertions(+), 27 deletions(-) diff --git a/arbitrary-value/src/arbitrary.rs b/arbitrary-value/src/arbitrary.rs index e130b89..7b85b0e 100644 --- a/arbitrary-value/src/arbitrary.rs +++ b/arbitrary-value/src/arbitrary.rs @@ -4,8 +4,8 @@ use ijson::{IArray, INumber, IObject, IString, IValue}; #[cfg(feature = "pyo3")] use pyo3::{ exceptions::{PyException, PyTypeError, PyValueError}, - prelude::*, - types::{PyList, PyNone}, + types::{PyAnyMethods as _, PyList, PyNone, PyTypeMethods as _}, + Borrowed, Bound, FromPyObject, IntoPyObject, PyAny, PyErr, Python, }; use snafu::{ResultExt, Snafu}; diff --git a/arbitrary-value/src/map_key.rs b/arbitrary-value/src/map_key.rs index de6c42f..b9e224e 100644 --- a/arbitrary-value/src/map_key.rs +++ b/arbitrary-value/src/map_key.rs @@ -7,8 +7,8 @@ use itertools::Itertools; #[cfg(feature = "pyo3")] use pyo3::{ exceptions::PyTypeError, - prelude::*, - types::{PyNone, PyTuple}, + types::{PyAnyMethods as _, PyNone, PyTuple, PyTypeMethods as _}, + Borrowed, Bound, FromPyObject, IntoPyObject, PyAny, PyErr, Python, }; use snafu::{ResultExt, Snafu}; diff --git a/entrypoint/src/lib.rs b/entrypoint/src/lib.rs index a81fb8e..6d4c541 100644 --- a/entrypoint/src/lib.rs +++ b/entrypoint/src/lib.rs @@ -5,7 +5,11 @@ use driver_kasa::connection::LB130USHandle; use futures::stream::{FuturesUnordered, StreamExt}; use home_assistant::{home_assistant::HomeAssistant, object_id::ObjectId}; use protocol::light::{Kelvin, TurnToTemperature}; -use pyo3::prelude::*; +use pyo3::{ + pyfunction, pymodule, + types::{PyModule, PyModuleMethods as _}, + wrap_pyfunction, Bound, PyAny, PyResult, Python, +}; use shadow_rs::shadow; use tokio::time::{interval, MissedTickBehavior}; use tracing::{level_filters::LevelFilter, Level}; diff --git a/home-assistant/src/event/context/context.rs b/home-assistant/src/event/context/context.rs index 178092d..593052c 100644 --- a/home-assistant/src/event/context/context.rs +++ b/home-assistant/src/event/context/context.rs @@ -1,6 +1,9 @@ use super::id::Id; use once_cell::sync::OnceCell; -use pyo3::{prelude::*, types::PyType}; +use pyo3::{ + types::{PyAnyMethods, PyModule, PyType}, + Bound, FromPyObject, IntoPyObject, Py, PyAny, PyErr, Python, +}; /// The context that triggered something. #[derive(Debug, FromPyObject)] diff --git a/home-assistant/src/event/event.rs b/home-assistant/src/event/event.rs index cf0bf49..a3ed3ae 100644 --- a/home-assistant/src/event/event.rs +++ b/home-assistant/src/event/event.rs @@ -1,5 +1,5 @@ use chrono::{DateTime, Utc}; -use pyo3::prelude::*; +use pyo3::FromPyObject; use super::event_origin::EventOrigin; diff --git a/home-assistant/src/event/event_origin.rs b/home-assistant/src/event/event_origin.rs index 3379903..6431d07 100644 --- a/home-assistant/src/event/event_origin.rs +++ b/home-assistant/src/event/event_origin.rs @@ -2,7 +2,8 @@ use std::str::FromStr; use pyo3::{ exceptions::{PyException, PyTypeError, PyValueError}, - prelude::*, + types::PyAnyMethods, + Borrowed, FromPyObject, PyAny, PyErr, }; use snafu::{ResultExt, Snafu}; diff --git a/home-assistant/src/home_assistant.rs b/home-assistant/src/home_assistant.rs index 9c1bbd9..3e9c417 100644 --- a/home-assistant/src/home_assistant.rs +++ b/home-assistant/src/home_assistant.rs @@ -1,7 +1,8 @@ use std::convert::Infallible; -use pyo3::prelude::*; - +use pyo3::{ + types::PyAnyMethods as _, Borrowed, Bound, FromPyObject, IntoPyObject, Py, PyAny, PyErr, Python, +}; use python_utils::{detach, validate_type_by_name, TypeByNameValidationError}; use snafu::{ResultExt, Snafu}; diff --git a/home-assistant/src/light/attributes.rs b/home-assistant/src/light/attributes.rs index 0b4854e..8673eba 100644 --- a/home-assistant/src/light/attributes.rs +++ b/home-assistant/src/light/attributes.rs @@ -1,4 +1,4 @@ -use pyo3::prelude::*; +use pyo3::FromPyObject; #[derive(Debug, FromPyObject)] #[pyo3(from_item_all)] diff --git a/home-assistant/src/light/mod.rs b/home-assistant/src/light/mod.rs index 80279e8..6e6b4a2 100644 --- a/home-assistant/src/light/mod.rs +++ b/home-assistant/src/light/mod.rs @@ -1,5 +1,5 @@ use attributes::LightAttributes; -use pyo3::prelude::*; +use pyo3::{FromPyObject, Py, PyAny, Python}; use snafu::{ResultExt, Snafu}; use state::LightState; diff --git a/home-assistant/src/light/protocol.rs b/home-assistant/src/light/protocol.rs index 204e6a4..5c0d376 100644 --- a/home-assistant/src/light/protocol.rs +++ b/home-assistant/src/light/protocol.rs @@ -7,7 +7,7 @@ use crate::{ state::{ErrorState, HomeAssistantState, UnexpectedState}, }; use protocol::light::{GetState, SetState}; -use pyo3::prelude::*; +use pyo3::Python; use python_utils::IsNone; use snafu::{ResultExt, Snafu}; diff --git a/home-assistant/src/logger.rs b/home-assistant/src/logger.rs index 9df6913..c7e8117 100644 --- a/home-assistant/src/logger.rs +++ b/home-assistant/src/logger.rs @@ -1,6 +1,9 @@ use arbitrary_value::{arbitrary::Arbitrary, map::Map}; use once_cell::sync::OnceCell; -use pyo3::{prelude::*, types::PyTuple}; +use pyo3::{ + types::{PyAnyMethods as _, PyModule, PyTuple}, + Borrowed, FromPyObject, IntoPyObject, Py, PyAny, PyErr, Python, +}; use python_utils::{detach, validate_type_by_name, TypeByNameValidationError}; #[derive(Debug)] @@ -54,7 +57,7 @@ pub struct LogData { } impl HassLogger { - pub fn new(py: Python<'_>, name: &str) -> PyResult { + pub fn new(py: Python<'_>, name: &str) -> Result { static LOGGING_MODULE: OnceCell> = OnceCell::new(); let logging_module = LOGGING_MODULE @@ -71,7 +74,7 @@ impl HassLogger { msg: &str, args: Vec, log_data: Option>, - ) -> PyResult<()> { + ) -> Result<(), PyErr> { let mut all_args = vec![msg.into_pyobject(py)?.into_any()]; for arg in args { let arg = arg.into_pyobject(py)?; @@ -94,7 +97,7 @@ impl HassLogger { msg: &str, args: Vec, log_data: Option>, - ) -> PyResult<()> { + ) -> Result<(), PyErr> { let mut all_args = vec![msg.into_pyobject(py)?.into_any()]; for arg in args { let arg = arg.into_pyobject(py)?; @@ -117,7 +120,7 @@ impl HassLogger { msg: &str, args: Vec, log_data: Option>, - ) -> PyResult<()> { + ) -> Result<(), PyErr> { let mut all_args = vec![msg.into_pyobject(py)?.into_any()]; for arg in args { let arg = arg.into_pyobject(py)?; @@ -141,7 +144,7 @@ impl HassLogger { msg: &str, args: Vec, log_data: Option>, - ) -> PyResult<()> { + ) -> Result<(), PyErr> { let mut all_args = vec![msg.into_pyobject(py)?.into_any()]; for arg in args { let arg = arg.into_pyobject(py)?; @@ -164,7 +167,7 @@ impl HassLogger { msg: &str, args: Vec, log_data: Option>, - ) -> PyResult<()> { + ) -> Result<(), PyErr> { let mut all_args = vec![msg.into_pyobject(py)?.into_any()]; for arg in args { let arg = arg.into_pyobject(py)?; diff --git a/home-assistant/src/service_registry.rs b/home-assistant/src/service_registry.rs index c4dd6e3..5b4ba20 100644 --- a/home-assistant/src/service_registry.rs +++ b/home-assistant/src/service_registry.rs @@ -1,7 +1,9 @@ use super::{event::context::context::Context, service::IntoServiceCall}; use pyo3::{ + conversion::FromPyObjectOwned, exceptions::{PyException, PyTypeError}, - prelude::*, + types::PyAnyMethods as _, + Borrowed, FromPyObject, IntoPyObject, Py, PyAny, PyErr, Python, }; use python_utils::{detach, validate_type_by_name, TypeByNameValidationError}; use snafu::{ResultExt, Snafu}; @@ -73,7 +75,7 @@ impl ServiceRegistry { return_response, ); - let future = Python::attach::<_, PyResult<_>>(|py| { + let future = Python::attach::<_, Result<_, PyErr>>(|py| { let service_registry = self.0.bind(py); let awaitable = service_registry.call_method("async_call", args, None)?; pyo3_async_runtimes::tokio::into_future(awaitable) diff --git a/home-assistant/src/state_machine.rs b/home-assistant/src/state_machine.rs index 720db4f..87c6fb7 100644 --- a/home-assistant/src/state_machine.rs +++ b/home-assistant/src/state_machine.rs @@ -2,7 +2,7 @@ use std::sync::Arc; use super::entity_id::EntityId; use super::state_object::StateObject; -use pyo3::prelude::*; +use pyo3::{conversion::FromPyObjectOwned, Borrowed, FromPyObject, Py, PyAny, PyErr, Python}; use python_utils::{detach, validate_type_by_name, TypeByNameValidationError}; use snafu::{ResultExt, Snafu}; diff --git a/home-assistant/src/state_object.rs b/home-assistant/src/state_object.rs index f81159c..325810f 100644 --- a/home-assistant/src/state_object.rs +++ b/home-assistant/src/state_object.rs @@ -7,8 +7,8 @@ use chrono::{DateTime, Utc}; use emitter_and_signal::signal::Signal; use once_cell::sync::OnceCell; use pyo3::{ - prelude::*, - types::{PyCFunction, PyDict, PyTuple}, + types::{PyAnyMethods as _, PyCFunction, PyDict, PyModule, PyTuple}, + Bound, FromPyObject, IntoPyObject as _, Py, PyAny, PyErr, Python, }; use snafu::{ResultExt, Snafu}; use std::{future::Future, sync::Arc}; @@ -86,7 +86,7 @@ impl< while let Some(publisher) = publisher_stream.wait().await { let (new_state_sender, mut new_state_receiver) = mpsc::channel(8); - let untrack = Python::attach::<_, PyResult<_>>(|py| { + let untrack = Python::attach::<_, Result<_, PyErr>>(|py| { static EVENT_MODULE: OnceCell> = OnceCell::new(); let event_module = EVENT_MODULE diff --git a/python-utils/src/lib.rs b/python-utils/src/lib.rs index 7a087b9..a291666 100644 --- a/python-utils/src/lib.rs +++ b/python-utils/src/lib.rs @@ -1,6 +1,7 @@ use pyo3::{ exceptions::{PyException, PyTypeError}, - prelude::*, + types::{PyAnyMethods as _, PyStringMethods, PyTypeMethods as _}, + Borrowed, Bound, Py, PyAny, PyErr, }; use snafu::{ResultExt, Snafu};