From 338a8c571c1cdcbf2e756f582b89883ba7a45942 Mon Sep 17 00:00:00 2001 From: Jacob Date: Tue, 14 Jul 2026 20:24:27 -0400 Subject: [PATCH] chore(home-assistant): streamline Python conversion for `ServiceDomain` and `ServiceId` --- home-assistant/src/service/service_domain.rs | 17 ++--------------- home-assistant/src/service/service_id.rs | 17 ++--------------- 2 files changed, 4 insertions(+), 30 deletions(-) diff --git a/home-assistant/src/service/service_domain.rs b/home-assistant/src/service/service_domain.rs index 2a4bc7b..836c433 100644 --- a/home-assistant/src/service/service_domain.rs +++ b/home-assistant/src/service/service_domain.rs @@ -1,21 +1,8 @@ -use std::convert::Infallible; - -use pyo3::{prelude::*, types::PyString}; +use python_utils::{FromPyFromStr, ToStrToPy}; use super::super::slug::Slug; pub use super::super::slug::SlugParsingError as ServiceDomainParsingError; -#[derive(Debug, Clone, derive_more::Display, derive_more::FromStr)] +#[derive(Debug, Clone, derive_more::FromStr, derive_more::Display, FromPyFromStr, ToStrToPy)] pub struct ServiceDomain(pub Slug); - -impl<'py> IntoPyObject<'py> for ServiceDomain { - type Target = PyString; - type Output = Bound<'py, Self::Target>; - type Error = Infallible; - - fn into_pyobject(self, py: Python<'py>) -> Result { - let s = self.to_string(); - s.into_pyobject(py) - } -} diff --git a/home-assistant/src/service/service_id.rs b/home-assistant/src/service/service_id.rs index 2807424..a2c0d50 100644 --- a/home-assistant/src/service/service_id.rs +++ b/home-assistant/src/service/service_id.rs @@ -1,21 +1,8 @@ -use std::convert::Infallible; - -use pyo3::{prelude::*, types::PyString}; +use python_utils::{FromPyFromStr, ToStrToPy}; use super::super::slug::Slug; pub use super::super::slug::SlugParsingError as ServiceIdParsingError; -#[derive(Debug, Clone, derive_more::Display, derive_more::FromStr)] +#[derive(Debug, Clone, derive_more::FromStr, derive_more::Display, FromPyFromStr, ToStrToPy)] pub struct ServiceId(pub Slug); - -impl<'py> IntoPyObject<'py> for ServiceId { - type Target = PyString; - type Output = Bound<'py, Self::Target>; - type Error = Infallible; - - fn into_pyobject(self, py: Python<'py>) -> Result { - let s = self.to_string(); - s.into_pyobject(py) - } -}