* Fix retry for native Smithy clients
* Treat `SdkError::ResponseError` as a retryable transient failure
* Rename `ClassifyResponse` to `ClassifyRetry`
* Rename 'policy' to 'classifier' in AWS SDK public API
* Rename `AwsResponseClassifier` to `AwsResponseRetryClassifier`
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* remove: need for operation type aliasing
rename: FluentClientGenerics.sendBounds params to be more accurate
update: FlexibleClientGenerics.sendBounds impl for readability
update: type of FluentClientGenerator input param `retryPolicyType` to be `Any` with a default of `RustType.Unit`
update: PaginatorGenerator to take retryPolicy as an input
chore: fix some spelling and grammar issues
remove: redundant `nextTokenEmpty` function from PaginatorGenerator
* Update CHANGELOG.next.toml
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* add: `writable` property to RustType that returns the type as a Writable
add: test for RustType writable
add: `writable` property to RuntimeType that returns the type as a Writable
update: FluentClientGenerator to take a writable for retry
* format: run formatter
Co-authored-by: John DiSanti <jdisanti@amazon.com>
feature: customizable operations
update: CHANGELOG.next.toml
update: RFC0017
update: add IntelliJ idea folder to .gitignore
add: GenericsGenerator with tests and docs
add: rustTypeParameters helper fn with tests and docs
add: RetryPolicy optional arg to FluentClientGenerator
move: FluentClientGenerator into its own file
* Remove `Default` implementation from `RetryConfig`
* Add use case integration tests
* Panic when retries/timeouts are enabled without a `sleep_impl`
* Combine the sleep, retry, and timeout customizations
* Add `sleep_impl` validation to the Smithy client builder
* add: ability for certain operations to be exempt from XML body root checking
* add: XML body root checking exemption for com.amazonaws.s3#GetObjectAttributesOutput
Currently, conversions from `aws_smithy_types::Number` into numeric Rust
types (`{i,u}{8, 16, 32, 64}` and `f{32, 64}`) are always lossy, because
they use the `as` Rust keyword to cast into the target type. This means
that clients and servers are accepting lossy data: for example, if an
operation is modeled to take in a 32-bit integer as input, and a client
incorrectly sends an integer number that does not fit in 32 bits, the
server will silently accept the truncated input. There are malformed
request protocol tests that verify that servers must reject these
requests.
This commit removes the lossy `to_*` methods on `Number` and instead
implements `TryFrom<$typ> for Number` for the target numeric type
`$typ`. These converters will attempt their best to perform the
conversion safely, and fail if it is lossy.
The code-generated JSON parsers will now fail with
`aws_smithy_json::deserialize::ErrorReason::InvalidNumber` if the number
in the JSON document cannot be converted into the modeled integer type
without losing precision. For floating point target types, lossy
conversions are still performed, via `Number::to_f32_lossy` and
`Number::to_f64_lossy`.
* Support granular control of specifying runtime crate versions
**BREAKING**: after this PR, `in smity-build.json` the path
`rust-codegen.runtimeConfig.version` no longer exists. Instead, a new
field `versions` comes in. It's an object mapping a runtime crate name
to a version string. There is also a special key `DEFAULT`, which is
presetted as detected runtime version but open to override. Crates
without version specified would be set as the same version as which
associated to key `DEFAULT`.
Signed-off-by: Weihang Lo <weihanglo@users.noreply.github.com>
* Add codegen version to generated package metadata
* Update `CHANGELOG.next.toml`
* Remove unnecessary try-catch block from `smithyCodegenVersion`
* Add git commit hash to version
* Fix version filename
* Add tests for `Version`
* Store version in "$smithyRsVersion\n$gitCommitHash" format
* Make version parsing more strict
* Add helper for creating deprecated attribute
* `Attribute.Custom.deprecated` is the main logic for building up
`#[deprecated]` attribute
* `RustWriter.deprecatedShape` is the counterpart of `documentShape`,
but we do not going to generalize it as what `documentShape` does.
Deprecated is only for Rust code and probably won't be used in other
output language.
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Test `@deprecated` trait for RustWriter
* Support `@deprecated` trait for StructureGenerator
* Support `@deprecated` trait for UnionGenerator
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Support `@deprecated` trait for EnumGenerator
* Support `@deprecated` trait for TopLevelErrorGenerator
* Support `@deprecated` trait for CombinedErrorGenerator
* Support `@deprecated` trait for ServerCombinedErrorGenerator
* Support `@deprecated` trait for FluentClient
* Support `@deprecated` trait for BuilderGenerator
* Cleanup leftover in test
* Use `dq()` helper method instead of escaping by hands
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Leverage Kotlin null safety well
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Allow `deprecated` rustc lint rule
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Allow deprecated in unit tests
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* Leverage kotlin null safety check again
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
* changelog: Support @deprecated trait
Signed-off-by: Weihang Lo <whlo@amazon.co.uk>
Co-authored-by: Matteo Bigoi <1781140+crisidev@users.noreply.github.com>
* Support server event streams
* Rename EventStreamInput to EventStreamSender
* Custom event stream errors
* EventStreamSender and Receiver are parametrized also on event stream error types
* Pokemon service model updated
* Pokemon server event handler
* Pokemon client to test event streams
* EventStreamDecorator to make optional using SigV4 signing
* Use forInlineFun for all errors
Closes: #1157
Signed-off-by: Daniele Ahmed <ahmeddan@amazon.de>
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* Update `hydrate-readmes` to take versions from `versions.toml`
* Add cleanup TODO comments to `changelogger`
* Update SDK readme template
* Split up `generate-version-manifest` subcommand
* Eliminate the `aws.sdk.version` property
* Fallback to model hash comparison if model metadata claims no changes
* Add `acquire-base-image` to `release.yml`
* Use empty model metadata for SDK generation in CI
* Fix the `aws-config` version number in SDK crate readmes
* add: checksum related body-wrappers
add: tests for checksum related body-wrappers
* add: aws-smithy-checksums to CrateSet.key
* add: missing base64::encoded_length fn
* update: use the checksum digest trait's output_size method to get checksum size
add: proptest for base64 encoded length
remove: old base64 encoded length test
remove: incorrect leftover comments and comment quotes
* remove: unnecessary pin
* remove: use of clone during checksum finalization
refactor: checksum fns are no longer fallible
refactor: HttpChecksum is now responsible for reporting size correctly
fix: don't consider trailers as part of ChecksumBody size hint
* remove: Taken error state
update: prefer if-let to match
fix: incorrect is_end_stream impl
refactor: use default trait impl for HttpChecksum::header_value
* fix: clippy lint
* add: header value tests
* undo: accidental retry changes
* add: http-checksum-related errors
* refactor: break up and modularize body wrappers
update: docs
update: ChecksumValidatedBody::new now takes a Box<dyn HttpChecksum>
* fix: broken test
* refactor: rename checksum body structs to be differentiated only by their module
* `aws-config`: Fix compilation error with `rustls` and `native-tls` disabled
The `ProviderConfig::with_tcp_connector` method uses
`aws_smithy_client::hyper_ext`, which only exists with the
`client-hyper` feature enabled. Add a feature enabling that, and enable
it by default.
Introducing this feature does not cause breakage, because aws-config
did not previously compile with `default-features = false` and neither
`rustls` nor `native-tls` enabled.
* CHANGELOG.next.toml: Update for aws-config compilation fix
* Fix doctest by adding feature gate
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* Re-export aws_types::SdkConfig in aws_config
This way people that want to access that structure don't have to add aws_types.
Signed-off-by: David Calavera <david.calavera@gmail.com>
* Add entry about SdkConfig to the changelog
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* add: support for unsigned aws-chunked content encoding
* add: aws-smithy-checksums to CrateSet.key
* refactor: API of AwsChunkedBodyOptions
update: AwsChunkedBody to note we only support single chunks
remove: unnecessary `Option`s
remove: overly smart total_length_of_trailers_in_bytes in trailers_as_aws_chunked_bytes
update: use "where"-style declaration for `impl<Inner> Body for AwsChunkedBody<Inner>`
add: helpful data to trace logging
add: trailer len double check in AwsChunkedBody::poll_data
add: test for trailer len double check
add: assert to size_hint
fix: incorrect body emitted when body is empty
add: test for empty encoded body
* Update CHANGELOG.next.toml
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* update: CHANGELOG.next.toml message
* refactor: aws-chunked trailer encoding and size calculation
update: when aws-chunked formatting a `HeaderMap`, header names with multiple values will be written out one value per line
remove: unnecessary AwsChunkedBodyOptions::stream_length method
add: trace fields
refactor: make inserting the final body CRLF more explicit
add: test to ensure trailer encoding and trailer len calculation stay in sync
* udpate: emit error instead of panicking for incorrect trailer length
* add: test ensuring trailer serialization and length calculation stay in sync for empty HeaderMap
* update: avoid repeated allocations in trailers_as_aws_chunked_bytes
fix: don't convert to str before getting len of HeaderValue
* add: aws-chunked body test for inner bodies that emit intermittent chunks
add: double check that stream_length used to create an `AwsChunkedBody` is correct.
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* Docker settings
add note on settings needed when using sdk inside docker container
* update changelog.next
* move to group relevant info
* mark code snippet as txt
When timeout support was added initially, the resulting error `SdkError::TimeoutError` was never added to the retry policy which prevented these errors from being retried. This was a bug—This commit rectifies the and adds two integration-level tests that ensure that timeouts are properly retried.
* rename: hosted_zone_preprocessor.rs to route53_resource_id_preprocessor.rs
update: trim_hosted_zone to work for more resource ids
add: new Route53 protocol test for GetChange resource id trimming
update: InlineDependency.forRustFile to accept filenames with a ".rs" extension
add: CHANGELOG.next.toml entry
- Fixes aws-sdk-rust#547
Previously, if no default profile was defined and no explicit profile was selected, the profile file provider would return an error. This relaxes that behavior to allow provider chains to move onto the next provider when that is the case.
Generate crates using Rust 2021 instead of Rust 2018
Remove use std::convert::TryFrom which is in the prelude
Closes#1332
Signed-off-by: Daniele Ahmed <ahmeddan@amazon.de>
* add: offset setter to FsBuilder
remove: file_size setter from FsBuilder
add: length setter to FsBuilder
add: test for ByteStream w/ offset
add: test for ByteStream w/ length less than file size
update: path_based_bytestreams_with_builder test
* add: test ensuring offset and length work correctly together
add: test ensuring that no data is returned when offset is greater than file size
add: test ensuring that nothing breaks if length to read is larger than file size
* add: chunking test
add: CHANGELOG.next.toml entry
refactor: new code based on PR comments
* remove: unused use statement
* refactor: length API
* update: prefer unwrap() to returning error in tests
* update: prefer unwrap() to returning error in tests
add: test for Length::Exact behavior
* update: error if offset is greater than file length
* fix: test to work with new offset error
* update: error test to be more specific
* fix: Silence home directory warning in Lambda Extensions
This PR follows on to https://github.com/awslabs/smithy-rs/pull/893 which added
LAMBDA_TASK_ROOT check. When running as a [Lambda Extension][ext]
the environment variable for TASK_ROOT is redacted, so it is not
reliable for testing whether you are in Lambda.
Related commit: fbb4bc
[ext]: https://docs.aws.amazon.com/lambda/latest/dg/runtimes-extensions-api.html
* update changelog
* fixup: use AWS_LAMBDA_FUNCTION_NAME which is available in both environments
* Update CHANGELOG.next.toml
* Fix failing unit test
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* add: callback trait proposed in rfc#0012
add: callback setting API to ByteStream
add: callback setting API to SdkBody
add: callback tests for streaming and buffered data
add: private callback fns for calculating checksums
udpate: pub methods on private struct `Inner` to be private
update: changelog
remove: Sync bound from SdkBody test "sdk_body_is_send()"
add: fn to merge `HeaderMap`s by appending
add: tests for new functionality
* add: Sync bound to callbacks
refactor: poll_trailers method
update: split out checksum callbacks into their own module
formatting: use throwaway let binding instead of allow unused variable
* add: license file to new crate
add: readme file to new crate
* add: missing anchor to Cargo.toml
* rename: aws-smithy-checksum-callbacks to aws-smithy-checksums
add: two more append_merge_header_maps tests
update: make append_merge_header_maps pub(crate)
remove: check for non-existent log line
* remove: doc test for private fn
* update: checksum callback struct names
* Upgrade to Smithy 1.16.2
* Remove extra test fixed in Smithy 1.16.2
* Upgrade to Smithy 1.16.3
* Remove extra test fixed in Smithy 1.16.3
* Remove failing expectation from server tests
* Upgrade to Smithy 1.17.0
* Upgrade to Smithy 1.18.1
* Upgrade to Smithy 1.19.0
* Upgrade to Smithy 1.21.0
* Update changelog
* Fix Gradle repositories
* Add endpoint resolver to SdkConfig
This commit adds an `endpoint_resolver` field to SdkConfig, which flows
through to the `endpoint_resolver` field on each individual service
configuration. To avoid a circular dependency between the aws-types
crate and the aws-endpoint crate, the `AwsEndpoint` type and its
dependencies are moved from the aws-endpoint crate to the aws-types
crate, then rexported in aws-endpoint.
Fixaws-labs/aws-sdk-rust#396.
* impl From<'static str> for signing service and signing region
* Code generate for the static string implementation
* Add EndpointResolver to aws_config
* Add docs and adapt test
* Fix test
* Fix endpoint config customizations test to remove dead code
* Re-add `.set_endpoint`
* Remove print and update changelog
Co-authored-by: Russell Cohen <rcoh@amazon.com>
This adds to improvements to `AssumeRoleProvider`:
1. This adds a cache aroudn this provider. Since this provider is intended to be used directly by customers,
it should be cached to improve performance and predictability.
2. Add support for configuring the role session length.
* add: default list of http versions
add: type alias for list of http versions
add: decorator to add desired http versions to property bag
fix: gradle warning for argument "model"
update: CHANGELOG
* fix: clippy lint
* update: use more accurate name for test RustCodegenDecorators
rename: HttpVersionListGenerator.kt to HttpVersionListCustomization.kt
update: HttpVersionListCustomization to grab versions from models when possible
fix: various docs issues reported by IDE
add: new "Extras" section to ServiceConfig
update: code broke by "Extras" change
add: tests for http version sniffing
* rename: in aws_smithy_types, timeout::TimeoutConfig is now timeout::Config
update: timeout::Config now wraps 3 config structs (Http, Tcp, Api)
update: aws_config timeout setting to work with timeout::Config changes
update: providers to work with new timeout config structure
update: codegen to work with new timeout config structure
update: CHANGELOG.next.toml
* add: missing copyright header
* update: impl From instead of Into for timeout conf
fix: clippy lints
* fix: service config codegen for timeouts
* fix: broken doc tests
* fix: bad doc link
* update: transfer aws_types::Config changes to new aws_types::SdkConfig
* fix: two outdated doc tests
* Apply suggestions from code review
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* undo: doc change for timeout env vars
refactor: move parse_str_as_timeout to aws_config and privatize it
update: aws_config code for parse_str_as_timeout
move
remove: comments from private struct members
update: comments for pub struct methods
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* rename: aws_types::config::Config to sdk_config::SdkConfig
update: code affected by SdkConfig rename
update: CHANGELOG.next.toml
* update: reëxport SdkConfig from aws_types root module
* Update aws/rust-runtime/aws-config/src/lib.rs
* Update CHANGELOG.next.toml
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* add: deprecated config helper
update: use reexported SdkConfig in docs referencing it
* fix: bad doc link
fix: wrong deprecation version
* Revert "fix: bad doc link"
This reverts commit eaa1b68e3b.
* fix: try new link style
* add: deprecation notice for `aws_types::config` module
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* Make it possible to configure the default credentials cache
* Update changelog
* Add settings directly to the `DefaultCredentialsChain` builder
* Improve doc comments for `load_timeout`
* Fix presigning bug with `content-length` and `content-type` in S3
* Fix presigning test in `aws-sigv4`
* Update changelog
* Clean when generating code for diff preview
* Incorporate feedback
* Fix server codegen
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* Fix exit status in `api-linter`
* Run `api-linter` against `aws-smithy-types` in CI
* Hide external buffer types used by `primitive::Encoder`
* Unpin nightly in CI
* Make `Encoder` a struct and split out an inner enum
* Update changelog
* fix: don't escape member names in doc links
* update: CHANGELOG.next.toml
* update: use docLink to format builderInputLink
* Apply suggestions from code review
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* remove: "r#" prefix from reserved word names in docs
* leave: "r#" prefix from reserved word names in docs
giving the people what they want
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* Move re-exports into `types` and re-export `AggregatedBytes`
* Remove extra newline from changelog generator
* Only re-export types when they're used
* Re-export `Config` and `Client` with `#[doc(inline)]`
* Update changelog
* Fix the canary build
* Don't check examples in full services check
* Split SDK service checks from example checks
* Delete examples
* Take examples from `aws-doc-sdk-examples`
* Fix example checkout
* Fix example manifests after relocation
* Update changelog
* Add SSO to the list of circular dep supressions
* Update CHANGELOG.next.toml
Co-authored-by: John DiSanti <jdisanti@amazon.com>
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* Fix paginator bug where `None` was returned immediately
The escape hatch added by aws-sdk-rust#391 did not properly handle the case where the first response was `None` and _not_ the empty string. This diff:
- Checks for emptiness for both maps and strings
- Fixes the check so that an initial `None` input does not cause an incorrect paginator error
* Update changelog
* Apply suggestions from code review
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* rustfmt
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* Add Support for SSO
This commit adds support for the SSO credential provider, which enables the aws-config to support using SSO when specified in `~/.aws/config`.
* Rename & add test of configuration failure
* Add SSO to the smoke test list
* CR improvements
- Improve error messages
- zeroize token
- add track_caller to improve test failure error messages
* Apply suggestions from code review
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* Update changelogs
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* add: links to related types for fluent builders
* update: CHANGELOG.next.toml
* update: generate fancy documented lists
* refactor: put docs on client builder methods instead of fluent builder
rename: generateShapeMemberList -> generateShapeMemberDocs
refactor: move generateShapeMemberList to FluentClientDecorator.kt
update: appease spellchecker
* remove: extra line in docs
* remove: unnecessary snake case conversion
* Add Support for Paginators
This commit adds pagination support for both clients. It does this via the `FnStream` abstraction which combines a rendezvous-channel with a closure to produce a stream. When the stream is polled, the underlying closure is polled to advance the computation which then pushes data into the channel.
Two paginators are generated:
1. `.paginate()` which produces a stream of `Result<Page, Err>`
2. `.paginate().items()` which produces a stream of `Result<Item, Err>` where items are flattened from the individual pages. This uses `TryFlatMap` to support conveniently generating a flat page iterator.
In addition, docs are generated to point customers towards the paginators.
* Add RFC, more tests
* backout unrelated changes
* Fix paginators for glacier
* Fix clippy error
* Add test for paginators that point to maps & fix apigateway paginator
* Fix docs
* remove extraeneous println
* Fix DynamoDB examples
* Disallow paginating operations with the idempotency token trait
* Apply suggestions from code review
misc typos / cleanups
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* CR feedback
* Fix typo
* Update changelog
* Apply suggestions from code review
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* CR feedback round 1
* Rename paginate to into_paginator()
* update pr bot comment
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
Co-authored-by: John DiSanti <jdisanti@amazon.com>
* fix: in generated docs, convert bare anchor tags to pre
* update: CHANGELOG.next.toml
* update: use html transformation instead of regex find/replace
* Update codegen/src/main/kotlin/software/amazon/smithy/rust/codegen/rustlang/RustWriter.kt
* Clone-able structs
* Change log entry
* Update CHANGELOG.next.toml
Co-authored-by: Russell Cohen <russell.r.cohen@gmail.com>
* Added two Clone directives and integration test
Co-authored-by: Russell Cohen <russell.r.cohen@gmail.com>
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* region function documented
* Example changelogs back
* Solve doc error
* text fixes (still fails)
* added back changelog items accidently removed
* refactor and fix test
* fix test
Co-authored-by: Russell Cohen <rcoh@amazon.com>
* update: don't generate useless Into<impl T>
* update: changelog
* remove: unnecessary into
* update: use helper fns to generate shared code
* refactor: simplify type-to-argument converter and make it act on all RustTypes
update: fixes predating this PR
* Add recursion detection middleware to the default middleware stack
Side refactorings:
- move AWS retry logic into its own module
- small update to protocol test to make it a little easier to use
* fixups
* Fix clippy
* Add more tests and comments
* Add Route53 Hosted Zone Trimming
Route53 requires a customization where `/hostedzone/` is stripped from hosted zone arguments when round-tripped. This adds a trait and customization to the route53 model to trim hosted zone prefixes.
* Add missing copyright header
* Also allow no leading slash
* Add route53 to smoke test because it has unit tests
* Update changelog
* Add missing call to flush()
* Remove unused env_logger depedendency
* [fix] Sleep not passed to ECS provider
When constructing an ECS credential provider, sleep_impl was not properly passed along from the provider config. This adds a test that asserts that retries will be made, and fixes the bug.
* Fix clippy lint
* Update changelog
Co-authored-by: Zelda Hessler <zhessler@amazon.com>
* Move additional-ci step into SDK smoke test
* Add `cargo hack` test to `aws-config` and make it pass
* Fix warning introduced by merge
* Incorporate feedback
* Fix native-tls example
* Include non-service-specific examples in the generated workspace
* Update changelog
* Fix missing dependency for compilation
* Fix typo in Kinesis example
* update: use shared encoder definition when encoding url paths, query strings
add: query string writer test
add: changelog entry for bugfix
* format: test file
* fix: integration test
add: ", ^, `, \, (space), {, }, and | to list of chars to percent encode
* add: tracing and tracing-subscriber dep to generated integration tests
* add: canonical req query param test
remove: obsolete LABEL_SET ascii set
* fix: outdated aws-hyper import
* add: native-tls example and test
update: aws-config to correctly separate the native-tls and rustls features for its dependencies
fix: native-tls feature gate typo
update: prefix unused id field with an underscore
* update: CHANGELOG.next.toml
* remove: unnecessary aws-sdk-sts feature deps from aws-config
* remove: obsolete dep features
* Fix label & query URI encoding
https://github.com/awslabs/aws-sdk-rust/issues/331 demonstrated that we were failing to properly encode characters for URI path components and query components in several situation. This:
- Fixes the specific bugs
- Adds proptests (run locally with 16K cases) to verify that this is the complete set.
- Adds an S3-specific protocol test that targets this issue
* Make the test a bit stronger
* Update changelog
* Fix several bugs associated with retry/sleep
The sleep implementation was late-bound but early loaded in retry which created a large surface area for bugs & meant that we emitted a lot of spurious warnings. This commit:
- Removes more kruft from aws-hyper and deals with the consequences
- Cleans up the way that HTTP clients are generated
- Passes in sleep to each incarnation of the retry controller to work around issues caused by late-binding vs. early binding sleep.
* first round of cleanups
* delete unused import
* Update integration tests
* Fix examples
* Fix aws-smithy-client docs
* Clippy fix
* fix flaky test
* Fix which relies on tokio/io
* Use provided sleep_impl in aws-smithy-client::retry
Previously, aws_smithy_client was hard coded to use tokio::sleep. This change:
- threads the sleep implementation into the retry controller
- moves the integration test out of aws-hyper and into aws-smithy-client
- takes a first pass at fixing the cargo featres (cargo hack --feature-powerset passes now)
* cleanups
* several test fixups
* Use tristate to conditionally log
* Update changelog