AWS SDK

AWS SDK

rev. 5076a5d9a3efeee157ffdb1dcd082304050768f6

Files changed:

tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/canonical_request.rs

@@ -854,854 +927,927 @@
  874    874   
    #[test]
  875    875   
    fn test_double_url_encode_path() {
  876    876   
        let test = SigningSuiteTest::v4("double-encode-path");
  877    877   
        let req = test.request();
  878    878   
        let req = SignableRequest::from(&req);
  879    879   
        let identity = Credentials::for_tests().into();
  880    880   
        let signing_params = signing_params(&identity, SigningSettings::default());
  881    881   
        let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
  882    882   
  883    883   
        let expected = test.canonical_request(SignatureLocation::Headers);
  884         -
        let actual = format!("{}", creq);
         884  +
        let actual = format!("{creq}");
  885    885   
        assert_eq!(actual, expected);
  886    886   
    }
  887    887   
  888    888   
    #[test]
  889    889   
    fn test_double_url_encode() {
  890    890   
        let test = SigningSuiteTest::v4("double-url-encode");
  891    891   
        let req = test.request();
  892    892   
        let req = SignableRequest::from(&req);
  893    893   
        let identity = Credentials::for_tests().into();
  894    894   
        let signing_params = signing_params(&identity, SigningSettings::default());
  895    895   
        let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
  896    896   
        let expected = test.canonical_request(SignatureLocation::Headers);
  897         -
        let actual = format!("{}", creq);
         897  +
        let actual = format!("{creq}");
  898    898   
        assert_eq!(actual, expected);
  899    899   
    }
  900    900   
  901    901   
    #[test]
  902    902   
    fn test_tilde_in_uri() {
  903    903   
        let req = http0::Request::builder()
  904    904   
            .uri("https://s3.us-east-1.amazonaws.com/my-bucket?list-type=2&prefix=~objprefix&single&k=&unreserved=-_.~").body("").unwrap().into();
  905    905   
        let req = SignableRequest::from(&req);
  906    906   
        let identity = Credentials::for_tests().into();
  907    907   
        let signing_params = signing_params(&identity, SigningSettings::default());

tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/test.rs

@@ -84,84 +144,144 @@
  104    104   
    pub(crate) fn context(&self) -> TestContext {
  105    105   
        let context = read(&self.path("context.json"));
  106    106   
        let tc_builder: TestContextBuilder = serde_json::from_str(&context).unwrap();
  107    107   
        tc_builder.build()
  108    108   
    }
  109    109   
}
  110    110   
  111    111   
fn test_parsed_request(path: &str) -> TestRequest {
  112    112   
    match parse_request(read(path).as_bytes()) {
  113    113   
        Ok(parsed) => parsed,
  114         -
        Err(err) => panic!("Failed to parse {}: {}", path, err),
         114  +
        Err(err) => panic!("Failed to parse {path}: {err}"),
  115    115   
    }
  116    116   
}
  117    117   
  118    118   
fn new_v4_signing_params_from_context(
  119    119   
    test_context: &'_ TestContext,
  120    120   
    signature_location: SignatureLocation,
  121    121   
) -> crate::http_request::SigningParams<'_> {
  122    122   
    let mut params = crate::sign::v4::SigningParams::from(test_context);
  123    123   
    params.settings.signature_location = signature_location;
  124    124   
    params.into()
@@ -401,401 +520,520 @@
  421    421   
    #[test]
  422    422   
    fn test_read_query_params() {
  423    423   
        let req = SigningSuiteTest::v4a("get-header-value-trim").request();
  424    424   
        assert_eq!(req.method, "GET");
  425    425   
        assert_eq!(req.uri, "https://example.amazonaws.com/");
  426    426   
        assert!(!req.headers.is_empty());
  427    427   
    }
  428    428   
}
  429    429   
  430    430   
fn read(path: &str) -> String {
  431         -
    println!("Loading `{}` for test case...", path);
         431  +
    println!("Loading `{path}` for test case...");
  432    432   
    let v = {
  433    433   
        match std::fs::read_to_string(path) {
  434    434   
            // This replacement is necessary for tests to pass on Windows, as reading the
  435    435   
            // test snapshots from the file system results in CRLF line endings being inserted.
  436    436   
            Ok(value) => value.replace("\r\n", "\n"),
  437    437   
            Err(err) => {
  438         -
                panic!("failed to load test case `{}`: {}", path, err);
         438  +
                panic!("failed to load test case `{path}`: {err}");
  439    439   
            }
  440    440   
        }
  441    441   
    };
  442    442   
  443    443   
    v.trim().to_string()
  444    444   
}
  445    445   
  446    446   
pub(crate) struct TestRequest {
  447    447   
    pub(crate) uri: String,
  448    448   
    pub(crate) method: String,
  449    449   
    pub(crate) headers: Vec<(String, String)>,
  450    450   
    pub(crate) body: TestSignedBody,
  451    451   
}
  452    452   
  453    453   
pub(crate) enum TestSignedBody {
  454    454   
    Signable(SignableBody<'static>),
  455    455   
    Bytes(Vec<u8>),
  456    456   
}
  457    457   
  458    458   
impl TestSignedBody {
  459    459   
    fn as_signable_body(&self) -> SignableBody<'_> {
  460    460   
        match self {
  461    461   
            TestSignedBody::Signable(data) => data.clone(),
  462    462   
            TestSignedBody::Bytes(data) => SignableBody::Bytes(data.as_slice()),
  463    463   
        }
  464    464   
    }
  465    465   
}
  466    466   
  467    467   
impl TestRequest {
  468    468   
    pub(crate) fn set_body(&mut self, body: SignableBody<'static>) {
  469    469   
        self.body = TestSignedBody::Signable(body);
  470    470   
    }
  471    471   
  472    472   
    pub(crate) fn as_http_request(&self) -> http0::Request<&'static str> {
  473    473   
        let mut builder = http0::Request::builder()
  474    474   
            .uri(&self.uri)
  475    475   
            .method(Method::from_bytes(self.method.as_bytes()).unwrap());
  476    476   
        for (k, v) in &self.headers {
  477    477   
            builder = builder.header(k, v);
  478    478   
        }
  479    479   
        builder.body("body").unwrap()
  480    480   
    }
  481    481   
}
  482    482   
  483    483   
impl<B: AsRef<[u8]>> From<http0::Request<B>> for TestRequest {
  484    484   
    fn from(value: http0::Request<B>) -> Self {
  485    485   
        let invalid = value
  486    486   
            .headers()
  487    487   
            .values()
  488    488   
            .find(|h| std::str::from_utf8(h.as_bytes()).is_err());
  489    489   
        if let Some(invalid) = invalid {
  490         -
            panic!("invalid header: {:?}", invalid);
         490  +
            panic!("invalid header: {invalid:?}");
  491    491   
        }
  492    492   
        Self {
  493    493   
            uri: value.uri().to_string(),
  494    494   
            method: value.method().to_string(),
  495    495   
            headers: value
  496    496   
                .headers()
  497    497   
                .iter()
  498    498   
                .map(|(k, v)| {
  499    499   
                    (
  500    500   
                        k.to_string(),

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-mocks/Cargo.toml

@@ -14,14 +0,44 @@
   34     34   
features = ["full"]
   35     35   
   36     36   
[dev-dependencies.aws-smithy-async]
   37     37   
path = "../aws-smithy-async"
   38     38   
features = ["rt-tokio"]
   39     39   
version = "1.2.6"
   40     40   
   41     41   
[dev-dependencies.aws-smithy-runtime]
   42     42   
path = "../aws-smithy-runtime"
   43     43   
features = ["client"]
   44         -
version = "1.9.4"
          44  +
version = "1.9.5"

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability-otel/Cargo.toml

@@ -1,1 +48,48 @@
    2      2   
[[bench]]
    3      3   
name = "sync_instruments"
    4      4   
harness = false
    5      5   
    6      6   
[[bench]]
    7      7   
name = "async_instruments"
    8      8   
harness = false
    9      9   
   10     10   
[package]
   11     11   
name = "aws-smithy-observability-otel"
   12         -
version = "0.1.2"
          12  +
version = "0.1.3"
   13     13   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>"]
   14     14   
description = "Smithy OpenTelemetry observability implementation."
   15     15   
edition = "2021"
   16     16   
license = "Apache-2.0"
   17     17   
repository = "https://github.com/awslabs/smithy-rs"
   18     18   
[package.metadata.docs.rs]
   19     19   
all-features = true
   20     20   
targets = ["x86_64-unknown-linux-gnu"]
   21     21   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   22     22   
rustdoc-args = ["--cfg", "docsrs"]
   23     23   
   24     24   
[dependencies]
   25     25   
value-bag = "1.10.0"
   26     26   
async-global-executor = "2.4.1"
   27     27   
async-task = "=4.7.1"
   28     28   
   29     29   
[dependencies.aws-smithy-observability]
   30     30   
path = "../aws-smithy-observability"
   31         -
version = "0.1.4"
          31  +
version = "0.2.0"
   32     32   
   33     33   
[dependencies.opentelemetry]
   34     34   
version = "0.26.0"
   35     35   
features = ["metrics"]
   36         -
[target."cfg(not(target_arch = \"powerpc\"))".dependencies.opentelemetry_sdk]
          36  +
[target."cfg(all(not(target_arch = \"powerpc\"), not(target_family = \"wasm\")))".dependencies.opentelemetry_sdk]
   37     37   
version = "0.26.0"
   38     38   
features = ["metrics", "testing"]
   39     39   
   40     40   
[dev-dependencies]
   41     41   
stats_alloc = "0.1.10"
   42     42   
   43     43   
[dev-dependencies.tokio]
   44     44   
version = "1.23.1"
   45     45   
   46     46   
[dev-dependencies.criterion]

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability-otel/src/lib.rs

@@ -1,1 +46,47 @@
    6      6   
/* Automatically managed default lints */
    7      7   
#![cfg_attr(docsrs, feature(doc_cfg))]
    8      8   
/* End of automatically managed default lints */
    9      9   
#![warn(
   10     10   
    missing_docs,
   11     11   
    rustdoc::missing_crate_level_docs,
   12     12   
    unreachable_pub,
   13     13   
    rust_2018_idioms
   14     14   
)]
   15     15   
// The `opentelemetry_sdk` crate uses std::sync::atomic::{AtomicI64, AtomicU64} which are not available on powerpc
   16         -
#![cfg(not(target_arch = "powerpc"))]
          16  +
// Additionally, opentelemetry_sdk depends on async-std which is not compatible with WASM targets
          17  +
#![cfg(all(not(target_arch = "powerpc"), not(target_family = "wasm")))]
   17     18   
   18     19   
//! Smithy Observability OpenTelemetry
   19     20   
//TODO(smithyobservability): once we have finalized everything and integrated metrics with our runtime
   20     21   
// libraries update this with detailed usage docs and examples
   21     22   
   22     23   
pub mod attributes;
   23     24   
pub mod meter;
   24     25   
   25     26   
#[cfg(test)]
   26     27   
mod tests {

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability-otel/src/meter.rs

@@ -259,259 +318,322 @@
  279    279   
            Ok(_) => Ok(()),
  280    280   
            Err(err) => Err(ObservabilityError::new(ErrorKind::Other, err)),
  281    281   
        }
  282    282   
    }
  283    283   
}
  284    284   
  285    285   
impl ProvideMeter for OtelMeterProvider {
  286    286   
    fn get_meter(&self, scope: &'static str, _attributes: Option<&Attributes>) -> Meter {
  287    287   
        Meter::new(Arc::new(MeterWrap(self.meter_provider.meter(scope))))
  288    288   
    }
         289  +
         290  +
    fn as_any(&self) -> &dyn std::any::Any {
         291  +
        self
         292  +
    }
  289    293   
}
  290    294   
  291    295   
#[cfg(test)]
  292    296   
mod tests {
  293    297   
  294    298   
    use std::sync::Arc;
  295    299   
  296    300   
    use aws_smithy_observability::instruments::AsyncMeasure;
  297    301   
    use aws_smithy_observability::{AttributeValue, Attributes, TelemetryProvider};
  298    302   
    use opentelemetry_sdk::metrics::{

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/Cargo.toml

@@ -1,1 +20,20 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-smithy-observability"
    4         -
version = "0.1.4"
           4  +
version = "0.2.0"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>"]
    6      6   
description = "Smithy observability implementation."
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/awslabs/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/src/lib.rs

@@ -1,1 +31,32 @@
   18     18   
// libraries update this with detailed usage docs and examples
   19     19   
   20     20   
mod attributes;
   21     21   
pub use attributes::{AttributeValue, Attributes};
   22     22   
mod context;
   23     23   
pub use context::{Context, ContextManager, Scope};
   24     24   
mod error;
   25     25   
pub use error::{ErrorKind, GlobalTelemetryProviderError, ObservabilityError};
   26     26   
pub mod global;
   27     27   
pub mod meter;
   28         -
mod noop;
          28  +
#[doc(hidden)]
          29  +
pub mod noop;
   29     30   
mod provider;
   30     31   
pub use provider::{TelemetryProvider, TelemetryProviderBuilder};
   31     32   
pub mod instruments;

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/src/meter.rs

@@ -1,1 +49,78 @@
    7      7   
//! real time.
    8      8   
    9      9   
use crate::instruments::{
   10     10   
    AsyncInstrumentBuilder, AsyncMeasure, Histogram, InstrumentBuilder, MonotonicCounter,
   11     11   
    UpDownCounter,
   12     12   
};
   13     13   
use crate::{attributes::Attributes, instruments::ProvideInstrument};
   14     14   
use std::{borrow::Cow, fmt::Debug, sync::Arc};
   15     15   
   16     16   
/// Provides named instances of [Meter].
   17         -
pub trait ProvideMeter: Send + Sync + Debug {
          17  +
pub trait ProvideMeter: Send + Sync + Debug + 'static {
   18     18   
    /// Get or create a named [Meter].
   19     19   
    fn get_meter(&self, scope: &'static str, attributes: Option<&Attributes>) -> Meter;
          20  +
          21  +
    /// Downcast to `Any` for type inspection.
          22  +
    ///
          23  +
    /// This method enables runtime type checking via downcasting to concrete types.
          24  +
    ///
          25  +
    /// Implementations must return `self` to enable proper downcasting:
          26  +
    ///
          27  +
    /// ```ignore
          28  +
    /// impl ProvideMeter for MyProvider {
          29  +
    ///     fn as_any(&self) -> &dyn std::any::Any {
          30  +
    ///         self
          31  +
    ///     }
          32  +
    /// }
          33  +
    /// ```
          34  +
    ///
          35  +
    /// # Example Usage
          36  +
    ///
          37  +
    /// ```ignore
          38  +
    /// use aws_smithy_observability::meter::ProvideMeter;
          39  +
    /// use aws_smithy_observability_otel::meter::OtelMeterProvider;
          40  +
    ///
          41  +
    /// fn check_provider_type(provider: &dyn ProvideMeter) {
          42  +
    ///     // Downcast to check if this is an OpenTelemetry provider
          43  +
    ///     if provider.as_any().downcast_ref::<OtelMeterProvider>().is_some() {
          44  +
    ///         println!("This is an OpenTelemetry provider");
          45  +
    ///     }
          46  +
    /// }
          47  +
    /// ```
          48  +
    fn as_any(&self) -> &dyn std::any::Any;
   20     49   
}
   21     50   
   22     51   
/// The entry point to creating instruments. A grouping of related metrics.
   23     52   
#[derive(Clone)]
   24     53   
pub struct Meter {
   25     54   
    pub(crate) instrument_provider: Arc<dyn ProvideInstrument + Send + Sync>,
   26     55   
}
   27     56   
   28     57   
impl Meter {
   29     58   
    /// Create a new [Meter] from an [ProvideInstrument]
@@ -69,98 +0,204 @@
   89    118   
    }
   90    119   
   91    120   
    /// Create a new [Histogram].
   92    121   
    pub fn create_histogram(
   93    122   
        &self,
   94    123   
        name: impl Into<Cow<'static, str>>,
   95    124   
    ) -> InstrumentBuilder<'_, Arc<dyn Histogram>> {
   96    125   
        InstrumentBuilder::new(self, name.into())
   97    126   
    }
   98    127   
}
         128  +
         129  +
#[cfg(test)]
         130  +
mod tests {
         131  +
    use super::*;
         132  +
    use crate::noop::NoopMeterProvider;
         133  +
         134  +
    #[test]
         135  +
    fn test_as_any_downcasting_works() {
         136  +
        // Create a noop provider
         137  +
        let provider = NoopMeterProvider;
         138  +
         139  +
        // Convert to trait object
         140  +
        let provider_dyn: &dyn ProvideMeter = &provider;
         141  +
         142  +
        // Test that downcasting works when as_any() is properly implemented
         143  +
        let downcast_result = provider_dyn.as_any().downcast_ref::<NoopMeterProvider>();
         144  +
        assert!(
         145  +
            downcast_result.is_some(),
         146  +
            "Downcasting should succeed when as_any() returns self"
         147  +
        );
         148  +
    }
         149  +
         150  +
    /// Custom meter provider for testing extensibility.
         151  +
    ///
         152  +
    /// This demonstrates that users can create their own meter provider implementations
         153  +
    /// and that all required types are publicly accessible.
         154  +
    #[derive(Debug)]
         155  +
    struct CustomMeterProvider;
         156  +
         157  +
    impl ProvideMeter for CustomMeterProvider {
         158  +
        fn get_meter(&self, _scope: &'static str, _attributes: Option<&Attributes>) -> Meter {
         159  +
            // Create a meter using NoopMeterProvider's implementation
         160  +
            // This demonstrates that users can compose their own providers
         161  +
            let noop_provider = NoopMeterProvider;
         162  +
            noop_provider.get_meter(_scope, _attributes)
         163  +
        }
         164  +
         165  +
        fn as_any(&self) -> &dyn std::any::Any {
         166  +
            self
         167  +
        }
         168  +
    }
         169  +
         170  +
    #[test]
         171  +
    fn test_custom_provider_extensibility() {
         172  +
        // Create a custom provider
         173  +
        let custom = CustomMeterProvider;
         174  +
        let provider_ref: &dyn ProvideMeter = &custom;
         175  +
         176  +
        // Verify custom provider doesn't downcast to NoopMeterProvider
         177  +
        assert!(
         178  +
            provider_ref
         179  +
                .as_any()
         180  +
                .downcast_ref::<NoopMeterProvider>()
         181  +
                .is_none(),
         182  +
            "Custom provider should not downcast to NoopMeterProvider"
         183  +
        );
         184  +
         185  +
        // Verify custom provider downcasts to its own type
         186  +
        assert!(
         187  +
            provider_ref
         188  +
                .as_any()
         189  +
                .downcast_ref::<CustomMeterProvider>()
         190  +
                .is_some(),
         191  +
            "Custom provider should downcast to CustomMeterProvider"
         192  +
        );
         193  +
         194  +
        // Verify the provider can create meters (demonstrates all required types are accessible)
         195  +
        let meter = custom.get_meter("test_scope", None);
         196  +
         197  +
        // Verify we can create instruments from the meter
         198  +
        let _counter = meter.create_monotonic_counter("test_counter").build();
         199  +
        let _histogram = meter.create_histogram("test_histogram").build();
         200  +
        let _up_down = meter.create_up_down_counter("test_up_down").build();
         201  +
         202  +
        // If we got here, all required types are publicly accessible
         203  +
    }
         204  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-observability/src/noop.rs

@@ -1,1 +56,63 @@
   11     11   
use crate::instruments::{
   12     12   
    AsyncInstrumentBuilder, AsyncMeasure, Histogram, InstrumentBuilder, MonotonicCounter,
   13     13   
    ProvideInstrument, UpDownCounter,
   14     14   
};
   15     15   
use crate::{
   16     16   
    attributes::Attributes,
   17     17   
    context::Context,
   18     18   
    meter::{Meter, ProvideMeter},
   19     19   
};
   20     20   
          21  +
/// A no-op implementation of [`ProvideMeter`] that creates no-op meters.
          22  +
///
          23  +
/// This provider is useful for testing or when observability is disabled.
   21     24   
#[derive(Debug)]
   22         -
pub(crate) struct NoopMeterProvider;
          25  +
pub struct NoopMeterProvider;
   23     26   
impl ProvideMeter for NoopMeterProvider {
   24     27   
    fn get_meter(&self, _scope: &'static str, _attributes: Option<&Attributes>) -> Meter {
   25     28   
        Meter::new(Arc::new(NoopMeter))
   26     29   
    }
          30  +
          31  +
    fn as_any(&self) -> &dyn std::any::Any {
          32  +
        self
          33  +
    }
   27     34   
}
   28     35   
   29     36   
#[derive(Debug)]
   30     37   
pub(crate) struct NoopMeter;
   31     38   
impl ProvideInstrument for NoopMeter {
   32     39   
    fn create_gauge(
   33     40   
        &self,
   34     41   
        _builder: AsyncInstrumentBuilder<'_, Arc<dyn AsyncMeasure<Value = f64>>, f64>,
   35     42   
    ) -> Arc<dyn AsyncMeasure<Value = f64>> {
   36     43   
        Arc::new(NoopAsyncMeasurement(PhantomData::<f64>))

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml

@@ -1,1 +79,79 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-smithy-runtime"
    4         -
version = "1.9.4"
           4  +
version = "1.9.5"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Zelda Hessler <zhessler@amazon.com>"]
    6      6   
description = "The new smithy runtime crate"
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/smithy-lang/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]
   15     15   
   16     16   
[package.metadata.smithy-rs-release-tooling]
   17     17   
stable = true
   18     18   
[package.metadata.cargo-udeps.ignore]
   19     19   
normal = ["aws-smithy-http"]
   20     20   
   21     21   
[features]
   22     22   
client = ["aws-smithy-runtime-api/client", "aws-smithy-types/http-body-1-x"]
   23     23   
http-auth = ["aws-smithy-runtime-api/http-auth"]
   24     24   
connector-hyper-0-14-x = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/hyper-014"]
   25     25   
tls-rustls = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/legacy-rustls-ring", "connector-hyper-0-14-x"]
   26     26   
default-https-client = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/rustls-aws-lc"]
   27     27   
rt-tokio = ["tokio/rt"]
   28     28   
test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "legacy-test-util"]
   29     29   
legacy-test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "connector-hyper-0-14-x", "aws-smithy-http-client/legacy-test-util"]
   30     30   
wire-mock = ["legacy-test-util", "aws-smithy-http-client/wire-mock"]
   31     31   
   32     32   
[dependencies]
   33     33   
bytes = "1.10.0"
   34     34   
fastrand = "2.3.0"
   35     35   
pin-project-lite = "0.2.14"
   36     36   
pin-utils = "0.1.0"
   37     37   
tracing = "0.1.40"
   38     38   
   39     39   
[dependencies.aws-smithy-async]
   40     40   
path = "../aws-smithy-async"
   41     41   
version = "1.2.6"
   42     42   
   43     43   
[dependencies.aws-smithy-http]
   44     44   
path = "../aws-smithy-http"
   45     45   
version = "0.62.5"
   46     46   
   47     47   
[dependencies.aws-smithy-observability]
   48     48   
path = "../aws-smithy-observability"
   49         -
version = "0.1.4"
          49  +
version = "0.2.0"
   50     50   
   51     51   
[dependencies.aws-smithy-runtime-api]
   52     52   
path = "../aws-smithy-runtime-api"
   53     53   
version = "1.9.2"
   54     54   
   55     55   
[dependencies.aws-smithy-types]
   56     56   
path = "../aws-smithy-types"
   57     57   
features = ["http-body-0-4-x"]
   58     58   
version = "1.3.4"
   59     59   

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/sdk_feature.rs

@@ -1,1 +30,32 @@
   16     16   
    RetryModeAdaptive,
   17     17   
    FlexibleChecksumsReqCrc32,
   18     18   
    FlexibleChecksumsReqCrc32c,
   19     19   
    FlexibleChecksumsReqCrc64,
   20     20   
    FlexibleChecksumsReqSha1,
   21     21   
    FlexibleChecksumsReqSha256,
   22     22   
    FlexibleChecksumsReqWhenSupported,
   23     23   
    FlexibleChecksumsReqWhenRequired,
   24     24   
    FlexibleChecksumsResWhenSupported,
   25     25   
    FlexibleChecksumsResWhenRequired,
          26  +
    ObservabilityTracing,
          27  +
    ObservabilityMetrics,
   26     28   
}
   27     29   
   28     30   
impl Storable for SmithySdkFeature {
   29     31   
    type Storer = StoreAppend<Self>;
   30     32   
}

tmp-codegen-diff/aws-sdk/sdk/aws-types/Cargo.toml

@@ -1,1 +69,69 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-types"
    4         -
version = "1.3.10"
           4  +
version = "1.3.11"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
    6      6   
description = "Cross-service types for the AWS SDK."
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/smithy-lang/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]
   15     15   
   16     16   
[package.metadata.smithy-rs-release-tooling]
   17     17   
stable = true
   18     18   
[package.metadata.cargo-udeps.ignore]
   19     19   
normal = ["aws-smithy-runtime", "hyper-rustls"]
   20     20   
   21     21   
[features]
   22     22   
examples = ["dep:hyper-rustls", "aws-smithy-runtime/client", "aws-smithy-runtime/connector-hyper-0-14-x", "aws-smithy-runtime/tls-rustls"]
   23     23   
   24     24   
[dependencies]
   25     25   
tracing = "0.1.40"
   26     26   
   27     27   
[dependencies.aws-credential-types]
   28     28   
path = "../aws-credential-types"
   29         -
version = "1.2.9"
          29  +
version = "1.2.10"
   30     30   
   31     31   
[dependencies.aws-smithy-async]
   32     32   
path = "../aws-smithy-async"
   33     33   
version = "1.2.6"
   34     34   
   35     35   
[dependencies.aws-smithy-types]
   36     36   
path = "../aws-smithy-types"
   37     37   
version = "1.3.4"
   38     38   
   39     39   
[dependencies.aws-smithy-runtime]
   40     40   
path = "../aws-smithy-runtime"
   41     41   
optional = true
   42         -
version = "1.9.4"
          42  +
version = "1.9.5"
   43     43   
   44     44   
[dependencies.aws-smithy-runtime-api]
   45     45   
path = "../aws-smithy-runtime-api"
   46     46   
features = ["client"]
   47     47   
version = "1.9.2"
   48     48   
   49     49   
[dependencies.hyper-rustls]
   50     50   
version = "0.24"
   51     51   
optional = true
   52     52   
features = ["rustls-native-certs", "http2", "webpki-roots"]

tmp-codegen-diff/aws-sdk/sdk/aws-types/src/sdk_config.rs

@@ -415,415 +508,508 @@
  435    435   
    }
  436    436   
  437    437   
    /// Set the identity cache for caching credentials and SSO tokens.
  438    438   
    ///
  439    439   
    /// The default identity cache will wait until the first request that requires authentication
  440    440   
    /// to load an identity. Once the identity is loaded, it is cached until shortly before it
  441    441   
    /// expires.
  442    442   
    ///
  443    443   
    /// # Examples
  444    444   
    /// Disabling identity caching:
  445         -
    /// ```rust
         445  +
    /// ```rust,ignore
  446    446   
    /// # use aws_types::SdkConfig;
  447    447   
    /// use aws_smithy_runtime::client::identity::IdentityCache;
  448    448   
    /// let config = SdkConfig::builder()
  449    449   
    ///     .identity_cache(IdentityCache::no_cache())
  450    450   
    ///     .build();
  451    451   
    /// ```
  452    452   
    /// Changing settings on the default cache implementation:
  453         -
    /// ```rust
         453  +
    /// ```rust,ignore
  454    454   
    /// # use aws_types::SdkConfig;
  455    455   
    /// use aws_smithy_runtime::client::identity::IdentityCache;
  456    456   
    /// use std::time::Duration;
  457    457   
    ///
  458    458   
    /// let config = SdkConfig::builder()
  459    459   
    ///     .identity_cache(
  460    460   
    ///         IdentityCache::lazy()
  461    461   
    ///             .load_timeout(Duration::from_secs(10))
  462    462   
    ///             .build()
  463    463   
    ///     )
  464    464   
    ///     .build();
  465    465   
    /// ```
  466    466   
    pub fn identity_cache(mut self, cache: impl ResolveCachedIdentity + 'static) -> Self {
  467    467   
        self.set_identity_cache(Some(cache.into_shared()));
  468    468   
        self
  469    469   
    }
  470    470   
  471    471   
    /// Set the identity cache for caching credentials and SSO tokens.
  472    472   
    ///
  473    473   
    /// The default identity cache will wait until the first request that requires authentication
  474    474   
    /// to load an identity. Once the identity is loaded, it is cached until shortly before it
  475    475   
    /// expires.
  476    476   
    ///
  477    477   
    /// # Examples
  478         -
    /// ```rust
         478  +
    /// ```rust,ignore
  479    479   
    /// # use aws_types::SdkConfig;
  480    480   
    /// use aws_smithy_runtime::client::identity::IdentityCache;
  481    481   
    ///
  482    482   
    /// fn override_identity_cache() -> bool {
  483    483   
    ///   // ...
  484    484   
    ///   # true
  485    485   
    /// }
  486    486   
    ///
  487    487   
    /// let mut builder = SdkConfig::builder();
  488    488   
    /// if override_identity_cache() {

tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml

@@ -1,1 +151,151 @@
   10     10   
rust-version = "1.88.0"
   11     11   
readme = "README.md"
   12     12   
[package.metadata.smithy]
   13     13   
codegen-version = "ci"
   14     14   
protocol = "aws.protocols#restJson1"
   15     15   
[package.metadata.docs.rs]
   16     16   
all-features = true
   17     17   
targets = ["x86_64-unknown-linux-gnu"]
   18     18   
[dependencies.aws-credential-types]
   19     19   
path = "../aws-credential-types"
   20         -
version = "1.2.9"
          20  +
version = "1.2.10"
   21     21   
   22     22   
[dependencies.aws-runtime]
   23     23   
path = "../aws-runtime"
   24     24   
features = ["event-stream"]
   25     25   
version = "1.5.16"
   26     26   
   27     27   
[dependencies.aws-sigv4]
   28     28   
path = "../aws-sigv4"
   29         -
version = "1.3.6"
          29  +
version = "1.3.8"
   30     30   
   31     31   
[dependencies.aws-smithy-async]
   32     32   
path = "../aws-smithy-async"
   33     33   
version = "1.2.6"
   34     34   
   35     35   
[dependencies.aws-smithy-eventstream]
   36     36   
path = "../aws-smithy-eventstream"
   37     37   
version = "0.60.13"
   38     38   
   39     39   
[dependencies.aws-smithy-http]
   40     40   
path = "../aws-smithy-http"
   41     41   
features = ["event-stream"]
   42     42   
version = "0.62.5"
   43     43   
   44     44   
[dependencies.aws-smithy-json]
   45     45   
path = "../aws-smithy-json"
   46     46   
version = "0.61.7"
   47     47   
   48     48   
[dependencies.aws-smithy-runtime]
   49     49   
path = "../aws-smithy-runtime"
   50     50   
features = ["client", "http-auth"]
   51         -
version = "1.9.4"
          51  +
version = "1.9.5"
   52     52   
   53     53   
[dependencies.aws-smithy-runtime-api]
   54     54   
path = "../aws-smithy-runtime-api"
   55     55   
features = ["client", "http-02x", "http-auth"]
   56     56   
version = "1.9.2"
   57     57   
   58     58   
[dependencies.aws-smithy-types]
   59     59   
path = "../aws-smithy-types"
   60     60   
features = ["http-body-0-4-x"]
   61     61   
version = "1.3.4"
   62     62   
   63     63   
[dependencies.aws-types]
   64     64   
path = "../aws-types"
   65         -
version = "1.3.10"
          65  +
version = "1.3.11"
   66     66   
   67     67   
[dependencies.bytes]
   68     68   
version = "1.4.0"
   69     69   
   70     70   
[dependencies.fastrand]
   71     71   
version = "2.0.0"
   72     72   
   73     73   
[dependencies.http]
   74     74   
version = "0.2.9"
   75     75   
   76     76   
[dependencies.hyper]
   77     77   
version = "0.14.26"
   78     78   
features = ["stream"]
   79     79   
   80     80   
[dependencies.regex-lite]
   81     81   
version = "0.1.5"
   82     82   
   83     83   
[dependencies.tracing]
   84     84   
version = "0.1"
   85     85   
[dev-dependencies.aws-config]
   86     86   
path = "../aws-config"
   87     87   
version = "1.8.10"
   88     88   
   89     89   
[dev-dependencies.aws-credential-types]
   90     90   
path = "../aws-credential-types"
   91     91   
features = ["test-util"]
   92         -
version = "1.2.9"
          92  +
version = "1.2.10"
   93     93   
   94     94   
[dev-dependencies.aws-runtime]
   95     95   
path = "../aws-runtime"
   96     96   
features = ["test-util"]
   97     97   
version = "1.5.16"
   98     98   
   99     99   
[dev-dependencies.aws-smithy-async]
  100    100   
path = "../aws-smithy-async"
  101    101   
features = ["test-util"]
  102    102   
version = "1.2.6"
  103    103   
  104    104   
[dev-dependencies.aws-smithy-eventstream]
  105    105   
path = "../aws-smithy-eventstream"
  106    106   
features = ["test-util"]
  107    107   
version = "0.60.13"
  108    108   
  109    109   
[dev-dependencies.aws-smithy-http-client]
  110    110   
path = "../aws-smithy-http-client"
  111    111   
features = ["test-util", "wire-mock"]
  112    112   
version = "1.1.4"
  113    113   
  114    114   
[dev-dependencies.aws-smithy-protocol-test]
  115    115   
path = "../aws-smithy-protocol-test"
  116    116   
version = "0.63.6"
  117    117   
  118    118   
[dev-dependencies.aws-smithy-runtime]
  119    119   
path = "../aws-smithy-runtime"
  120    120   
features = ["test-util"]
  121         -
version = "1.9.4"
         121  +
version = "1.9.5"
  122    122   
  123    123   
[dev-dependencies.aws-smithy-runtime-api]
  124    124   
path = "../aws-smithy-runtime-api"
  125    125   
features = ["test-util"]
  126    126   
version = "1.9.2"
  127    127   
  128    128   
[dev-dependencies.aws-smithy-types]
  129    129   
path = "../aws-smithy-types"
  130    130   
features = ["test-util"]
  131    131   
version = "1.3.4"

tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/src/config.rs

@@ -1340,1340 +1403,1405 @@
 1360   1360   
            use crate::config::endpoint::ResolveEndpoint;
 1361   1361   
            crate::config::endpoint::DefaultResolver::new().into_shared_resolver()
 1362   1362   
        }));
 1363   1363   
        runtime_components.push_interceptor(::aws_smithy_runtime::client::http::connection_poisoning::ConnectionPoisoningInterceptor::new());
 1364   1364   
        runtime_components.push_retry_classifier(::aws_smithy_runtime::client::retries::classifiers::HttpStatusCodeClassifier::default());
 1365   1365   
        runtime_components.push_interceptor(crate::sdk_feature_tracker::retry_mode::RetryModeFeatureTrackerInterceptor::new());
 1366   1366   
        runtime_components.push_interceptor(::aws_runtime::service_clock_skew::ServiceClockSkewInterceptor::new());
 1367   1367   
        runtime_components.push_interceptor(::aws_runtime::request_info::RequestInfoInterceptor::new());
 1368   1368   
        runtime_components.push_interceptor(::aws_runtime::user_agent::UserAgentInterceptor::new());
 1369   1369   
        runtime_components.push_interceptor(::aws_runtime::invocation_id::InvocationIdInterceptor::new());
        1370  +
        runtime_components.push_interceptor(::aws_runtime::observability_detection::ObservabilityDetectionInterceptor::new());
 1370   1371   
        runtime_components.push_interceptor(::aws_runtime::recursion_detection::RecursionDetectionInterceptor::new());
 1371   1372   
        runtime_components.push_auth_scheme(::aws_smithy_runtime_api::client::auth::SharedAuthScheme::new(
 1372   1373   
            ::aws_runtime::auth::sigv4::SigV4AuthScheme::new(),
 1373   1374   
        ));
        1375  +
        runtime_components.push_interceptor(::aws_runtime::endpoint_override::EndpointOverrideInterceptor::new());
 1374   1376   
        Self { config, runtime_components }
 1375   1377   
    }
 1376   1378   
}
 1377   1379   
 1378   1380   
impl ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin for ServiceRuntimePlugin {
 1379   1381   
    fn config(&self) -> ::std::option::Option<::aws_smithy_types::config_bag::FrozenLayer> {
 1380   1382   
        self.config.clone()
 1381   1383   
    }
 1382   1384   
 1383   1385   
    fn order(&self) -> ::aws_smithy_runtime_api::client::runtime_plugin::Order {