Skip to content

Merge feat/add-query-protocol branch into develop#673

Merged
arandito merged 3 commits intodevelopfrom
feat/add-query-protocol
Apr 1, 2026
Merged

Merge feat/add-query-protocol branch into develop#673
arandito merged 3 commits intodevelopfrom
feat/add-query-protocol

Conversation

@arandito
Copy link
Copy Markdown
Contributor

Description

This PR merges the feat/add-query-protocol feature branch into develop, adding AWS Query protocol support and generic XML deserialization to smithy-python.

Related PRs in feat/add-query-protocol:

In addition to the above, this PR includes:

  • ca5b8c92 — Updates the smithy-xml initial version to 0.0.0 to prepare for release

Testing

  • Ran smithy protocol tests and confirmed they pass for the newly added Query protocol support.
  • Generated an STS client from its Smithy service model and successfully made live service calls.

STS test script

import asyncio

from smithy_aws_core.identity import EnvironmentCredentialsResolver

from aws_sdk_sts.client import STSClient
from aws_sdk_sts.config import Config
from aws_sdk_sts.models import GetCallerIdentityInput


async def main():
    client = STSClient(
        config=Config(
            endpoint_uri="https://sts.us-west-2.amazonaws.com",
            region="us-west-2",
            aws_credentials_identity_resolver=EnvironmentCredentialsResolver(),
        )
    )
    response = await client.get_caller_identity(GetCallerIdentityInput())

    print(response)

asyncio.run(main())

Output

> python test.py
/Users/aearanda/repos/github/smithy-python/packages/aws_sdk_signers/signers.py:794: AWSSDKWarning: Payload signing is enabled. This may result in decreased performance for large request bodies.
  warnings.warn(
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x106caa240>
GetCallerIdentityOutput(user_id='<REDACTED>', account='<REDACTED>', arn='<REDACTED>')

How to Run Protocol Tests

make install
source .venv/bin/activate
make test-protocols

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

* smithy-aws-core: add support for awsQuery protocol

* codegen: generate AwsQueryClientProtocol for awsQuery services and generate protocol tests
@arandito arandito requested a review from a team as a code owner March 30, 2026 20:57
Copy link
Copy Markdown
Contributor

@jonathan343 jonathan343 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great work @arandito! These changes seem mergable in this state. I think we might end up refactoring some of the work on the smithy-aws-core side once we define a more common hierarchy for non-binding aws protocols. But I don't think we should block this on that.

I was able to run an additional sanity check by code generating the SNS client and making successful calls. The code generated clients currently default to an aiohttp based client (since there are no event streaming operations) which works, however, when I swap in the CRT based client, I'm seeing the following error:

smithy_core.exceptions.SmithyError: 2056 (AWS_ERROR_HTTP_MISSING_BODY_STREAM): Given the provided headers (ex: Content-Length), a body is expected.

This is something for us to look into as a follow up

@arandito arandito merged commit 6ac6022 into develop Apr 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants