From 1b72bec7ee7099a342bec2fbbc17deedf79b6b0b Mon Sep 17 00:00:00 2001 From: Tim Conley Date: Tue, 2 Dec 2025 10:19:59 -0800 Subject: [PATCH 1/2] Update core and match new names and types --- temporalio/bridge/Cargo.lock | 70 ++++++++++++++++++++++++++++++--- temporalio/bridge/sdk-core | 2 +- temporalio/bridge/src/client.rs | 53 ++++++++++++------------- 3 files changed, 92 insertions(+), 33 deletions(-) diff --git a/temporalio/bridge/Cargo.lock b/temporalio/bridge/Cargo.lock index ee5e5e668..dd4502894 100644 --- a/temporalio/bridge/Cargo.lock +++ b/temporalio/bridge/Cargo.lock @@ -159,6 +159,31 @@ version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a65b545ab31d687cff52899d4890855fec459eb6afe0da6417b8a18da87aa29" +[[package]] +name = "bon" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebeb9aaf9329dff6ceb65c689ca3db33dbf15f324909c60e4e5eef5701ce31b1" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77e9d642a7e3a318e37c2c9427b5a6a48aa1ad55dcd986f3034ab2239045a645" +dependencies = [ + "darling 0.21.3", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "bumpalo" version = "3.19.0" @@ -268,8 +293,18 @@ version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.20.11", + "darling_macro 0.20.11", +] + +[[package]] +name = "darling" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +dependencies = [ + "darling_core 0.21.3", + "darling_macro 0.21.3", ] [[package]] @@ -286,13 +321,38 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_core" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + [[package]] name = "darling_macro" version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core", + "darling_core 0.20.11", + "quote", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +dependencies = [ + "darling_core 0.21.3", "quote", "syn", ] @@ -337,7 +397,7 @@ version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling", + "darling 0.20.11", "proc-macro2", "quote", "syn", @@ -2473,8 +2533,8 @@ dependencies = [ "async-trait", "backoff", "base64", + "bon", "bytes", - "derive_builder", "derive_more", "dyn-clone", "futures-retry", diff --git a/temporalio/bridge/sdk-core b/temporalio/bridge/sdk-core index 45b1d7edf..aed367e0b 160000 --- a/temporalio/bridge/sdk-core +++ b/temporalio/bridge/sdk-core @@ -1 +1 @@ -Subproject commit 45b1d7edf7138eb6e307a0acddccf970f19ee73e +Subproject commit aed367e0bd76383f56b0d15a6aa28c42004fccc5 diff --git a/temporalio/bridge/src/client.rs b/temporalio/bridge/src/client.rs index 88acdfaa1..d65cdb608 100644 --- a/temporalio/bridge/src/client.rs +++ b/temporalio/bridge/src/client.rs @@ -8,9 +8,9 @@ use temporalio_client::tonic::{ metadata::{AsciiMetadataKey, AsciiMetadataValue, BinaryMetadataKey, BinaryMetadataValue}, }; use temporalio_client::{ - ClientKeepAliveConfig as CoreClientKeepAliveConfig, ClientOptions, ClientOptionsBuilder, - ConfiguredClient, HttpConnectProxyOptions, RetryClient, RetryConfig, TemporalServiceClient, - TlsConfig, + ClientKeepAliveOptions, ClientOptions, + ConfiguredClient, HttpConnectProxyOptions, RetryClient, RetryOptions, TemporalServiceClient, + TlsOptions, }; use url::Url; @@ -229,9 +229,12 @@ impl TryFrom for ClientOptions { type Error = PyErr; fn try_from(opts: ClientConfig) -> PyResult { - let mut gateway_opts = ClientOptionsBuilder::default(); + let gateway_opts = ClientOptions::builder(); let (ascii_headers, binary_headers) = partition_headers(opts.metadata); - gateway_opts + let tls_options = if let Some(tls_config) = opts.tls_config { + Some(tls_config.try_into()?) + } else { None }; + let gateway_opts = gateway_opts .target_url( Url::parse(&opts.target_url) .map_err(|err| PyValueError::new_err(format!("invalid target URL: {err}")))?, @@ -239,37 +242,33 @@ impl TryFrom for ClientOptions { .client_name(opts.client_name) .client_version(opts.client_version) .identity(opts.identity) - .retry_config( + .retry_options( opts.retry_config - .map_or(RetryConfig::default(), |c| c.into()), + .map_or(RetryOptions::default(), |c| c.into()), ) .keep_alive(opts.keep_alive_config.map(Into::into)) - .http_connect_proxy(opts.http_connect_proxy_config.map(Into::into)) - .headers(Some(ascii_headers)) - .binary_headers(Some(binary_headers)) - .api_key(opts.api_key); - // Builder does not allow us to set option here, so we have to make - // a conditional to even call it - if let Some(tls_config) = opts.tls_config { - gateway_opts.tls_cfg(tls_config.try_into()?); - } - gateway_opts - .build() - .map_err(|err| PyValueError::new_err(format!("Invalid client config: {err}"))) + .maybe_http_connect_proxy(opts.http_connect_proxy_config.map(Into::into)) + .headers(ascii_headers) + .binary_headers(binary_headers) + .maybe_api_key(opts.api_key) + .maybe_tls_options(tls_options); + + Ok(gateway_opts + .build()) } } -impl TryFrom for temporalio_client::TlsConfig { +impl TryFrom for temporalio_client::TlsOptions { type Error = PyErr; fn try_from(conf: ClientTlsConfig) -> PyResult { - Ok(TlsConfig { + Ok(TlsOptions { server_root_ca_cert: conf.server_root_ca_cert, domain: conf.domain, - client_tls_config: match (conf.client_cert, conf.client_private_key) { + client_tls_options: match (conf.client_cert, conf.client_private_key) { (None, None) => None, (Some(client_cert), Some(client_private_key)) => { - Some(temporalio_client::ClientTlsConfig { + Some(temporalio_client::ClientTlsOptions { client_cert, client_private_key, }) @@ -284,9 +283,9 @@ impl TryFrom for temporalio_client::TlsConfig { } } -impl From for RetryConfig { +impl From for RetryOptions { fn from(conf: ClientRetryConfig) -> Self { - RetryConfig { + RetryOptions { initial_interval: Duration::from_millis(conf.initial_interval_millis), randomization_factor: conf.randomization_factor, multiplier: conf.multiplier, @@ -297,9 +296,9 @@ impl From for RetryConfig { } } -impl From for CoreClientKeepAliveConfig { +impl From for ClientKeepAliveOptions { fn from(conf: ClientKeepAliveConfig) -> Self { - CoreClientKeepAliveConfig { + ClientKeepAliveOptions { interval: Duration::from_millis(conf.interval_millis), timeout: Duration::from_millis(conf.timeout_millis), } From d17451208d643764df76cad07de4d796774409fb Mon Sep 17 00:00:00 2001 From: Tim Conley Date: Tue, 2 Dec 2025 11:13:47 -0800 Subject: [PATCH 2/2] Format --- temporalio/bridge/src/client.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/temporalio/bridge/src/client.rs b/temporalio/bridge/src/client.rs index d65cdb608..ad88d17b5 100644 --- a/temporalio/bridge/src/client.rs +++ b/temporalio/bridge/src/client.rs @@ -8,9 +8,8 @@ use temporalio_client::tonic::{ metadata::{AsciiMetadataKey, AsciiMetadataValue, BinaryMetadataKey, BinaryMetadataValue}, }; use temporalio_client::{ - ClientKeepAliveOptions, ClientOptions, - ConfiguredClient, HttpConnectProxyOptions, RetryClient, RetryOptions, TemporalServiceClient, - TlsOptions, + ClientKeepAliveOptions, ClientOptions, ConfiguredClient, HttpConnectProxyOptions, RetryClient, + RetryOptions, TemporalServiceClient, TlsOptions, }; use url::Url; @@ -232,8 +231,10 @@ impl TryFrom for ClientOptions { let gateway_opts = ClientOptions::builder(); let (ascii_headers, binary_headers) = partition_headers(opts.metadata); let tls_options = if let Some(tls_config) = opts.tls_config { - Some(tls_config.try_into()?) - } else { None }; + Some(tls_config.try_into()?) + } else { + None + }; let gateway_opts = gateway_opts .target_url( Url::parse(&opts.target_url) @@ -252,9 +253,8 @@ impl TryFrom for ClientOptions { .binary_headers(binary_headers) .maybe_api_key(opts.api_key) .maybe_tls_options(tls_options); - - Ok(gateway_opts - .build()) + + Ok(gateway_opts.build()) } }