Skip to content

Commit 5f128d4

Browse files
authored
Merge branch 'smithy-lang:develop' into user_agent
2 parents a35f607 + 50f3cd7 commit 5f128d4

File tree

11 files changed

+53
-74
lines changed

11 files changed

+53
-74
lines changed

codegen/core/src/main/java/software/amazon/smithy/python/codegen/ClientGenerator.java

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ def _classify_error(
153153
error: Exception,
154154
context: InterceptorContext[Input, Output, $1T, $2T | None]
155155
) -> RetryErrorInfo:
156+
logger.debug("Classifying error: %s", error)
156157
""", transportRequest, transportResponse);
157158
writer.indent();
158159

@@ -229,7 +230,7 @@ async def _handle_execution(
229230
event_response_deserializer: DeserializeableShape | None = None,
230231
${/hasEventStream}
231232
) -> Output:
232-
logger.debug(f"Making request for operation {operation_name} with parameters: {input}")
233+
logger.debug('Making request for operation "%s" with parameters: %s', operation_name, input)
233234
context: InterceptorContext[Input, None, None, None] = InterceptorContext(
234235
request=input,
235236
response=None,
@@ -276,9 +277,11 @@ async def _handle_execution(
276277
context_with_transport_request = cast(
277278
InterceptorContext[Input, None, $2T, None], context
278279
)
280+
logger.debug("Serializing request for: %s", context_with_transport_request.request)
279281
context_with_transport_request._transport_request = await serialize(
280282
context_with_transport_request.request, config
281283
)
284+
logger.debug("Serialization complete. Transport request: %s", context_with_transport_request._transport_request)
282285
283286
# Step 5: Invoke read_after_serialization
284287
for interceptor in interceptors:
@@ -326,6 +329,11 @@ async def _handle_execution(
326329
)
327330
except SmithyRetryException:
328331
raise context_with_response.response
332+
logger.debug(
333+
"Retry needed. Attempting request #%s in %.4f seconds.",
334+
retry_token.retry_count + 1,
335+
retry_token.retry_delay
336+
)
329337
await sleep(retry_token.retry_delay)
330338
current_body = context_with_transport_request.transport_request.body
331339
if (seek := getattr(current_body, "seek", None)) is not None:
@@ -336,7 +344,7 @@ await seek(0)
336344
break
337345
except Exception as e:
338346
if context.response is not None:
339-
logger.exception(f"Exception occurred while handling: {context.response}")
347+
logger.exception("Exception occurred while handling: %s", context.response)
340348
pass
341349
context._response = e
342350
@@ -443,10 +451,12 @@ async def _handle_attempt(
443451
raise $1T(
444452
"No endpoint_uri found on the operation config."
445453
)
446-
454+
endpoint_resolver_parameters = StaticEndpointParams(uri=config.endpoint_uri)
455+
logger.debug("Calling endpoint resolver with parameters: %s", endpoint_resolver_parameters)
447456
endpoint = await config.endpoint_resolver.resolve_endpoint(
448-
StaticEndpointParams(uri=config.endpoint_uri)
457+
endpoint_resolver_parameters
449458
)
459+
logger.debug("Endpoint resolver result: %s", endpoint)
450460
if not endpoint.uri.path:
451461
path = ""
452462
elif endpoint.uri.path.endswith("/"):
@@ -484,11 +494,17 @@ async def _handle_attempt(
484494
writer.write("""
485495
# Step 7i: sign the request
486496
if auth_option and signer:
497+
logger.debug("HTTP request to sign: %s", context.transport_request)
498+
logger.debug(
499+
"Signer properties: %s",
500+
auth_option.signer_properties
501+
)
487502
context._transport_request = await signer.sign(
488503
http_request=context.transport_request,
489504
identity=identity,
490505
signing_properties=auth_option.signer_properties,
491506
)
507+
logger.debug("Signed HTTP request: %s", context._transport_request)
492508
""");
493509
}
494510
writer.popState();
@@ -518,10 +534,13 @@ async def _handle_attempt(
518534
context_with_response = cast(
519535
InterceptorContext[Input, None, $1T, $2T], context
520536
)
537+
logger.debug("HTTP request config: %s", request_config)
538+
logger.debug("Sending HTTP request: %s", context_with_response.transport_request)
521539
context_with_response._transport_response = await config.http_client.send(
522540
request=context_with_response.transport_request,
523541
request_config=request_config,
524542
)
543+
logger.debug("Received HTTP response: %s", context_with_response.transport_response)
525544
526545
""", transportRequest, transportResponse);
527546
}
@@ -547,16 +566,18 @@ async def _handle_attempt(
547566
InterceptorContext[Input, Output, $1T, $2T],
548567
context_with_response,
549568
)
569+
logger.debug("Deserializing transport response: %s", context_with_output._transport_response)
550570
context_with_output._response = await deserialize(
551571
context_with_output._transport_response, config
552572
)
573+
logger.debug("Deserialization complete. Response: %s", context_with_output._response)
553574
554575
# Step 7r: Invoke read_after_deserialization
555576
for interceptor in interceptors:
556577
interceptor.read_after_deserialization(context_with_output)
557578
except Exception as e:
558579
if context.response is not None:
559-
logger.exception(f"Exception occurred while handling: {context.response}")
580+
logger.exception("Exception occurred while handling: %s", context.response)
560581
pass
561582
context._response = e
562583
@@ -582,7 +603,7 @@ async def _finalize_attempt(
582603
)
583604
except Exception as e:
584605
if context.response is not None:
585-
logger.exception(f"Exception occurred while handling: {context.response}")
606+
logger.exception("Exception occurred while handling: %s", context.response)
586607
pass
587608
context._response = e
588609
@@ -592,7 +613,7 @@ async def _finalize_attempt(
592613
interceptor.read_after_attempt(context)
593614
except Exception as e:
594615
if context.response is not None:
595-
logger.exception(f"Exception occurred while handling: {context.response}")
616+
logger.exception("Exception occurred while handling: %s", context.response)
596617
pass
597618
context._response = e
598619
@@ -613,11 +634,11 @@ async def _finalize_execution(
613634
pass
614635
except Exception as e:
615636
# log and ignore exceptions
616-
logger.exception(f"Exception occurred while dispatching trace events: {e}")
637+
logger.exception("Exception occurred while dispatching trace events: %s", e)
617638
pass
618639
except Exception as e:
619640
if context.response is not None:
620-
logger.exception(f"Exception occurred while handling: {context.response}")
641+
logger.exception("Exception occurred while handling: %s", context.response)
621642
pass
622643
context._response = e
623644
@@ -627,7 +648,7 @@ async def _finalize_execution(
627648
interceptor.read_after_execution(context)
628649
except Exception as e:
629650
if context.response is not None:
630-
logger.exception(f"Exception occurred while handling: {context.response}")
651+
logger.exception("Exception occurred while handling: %s", context.response)
631652
pass
632653
context._response = e
633654

codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/StructureGenerator.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,16 @@ class $1L($2T):
158158
private void writeProperties() {
159159
for (MemberShape member : requiredMembers) {
160160
writer.pushState();
161-
writer.putContext("sensitive", false);
162-
if (member.hasTrait(SensitiveTrait.class)) {
161+
var target = model.expectShape(member.getTarget());
162+
163+
if (target.hasTrait(SensitiveTrait.class)) {
163164
writer.addStdlibImport("dataclasses", "field");
164165
writer.putContext("sensitive", true);
166+
} else {
167+
writer.putContext("sensitive", false);
165168
}
166169

167170
var memberName = symbolProvider.toMemberName(member);
168-
var target = model.expectShape(member.getTarget());
169171
writer.putContext("quote", recursiveShapes.contains(target) ? "'" : "");
170172
writer.write("""
171173
$L: ${quote:L}$T${quote:L}\
@@ -178,9 +180,10 @@ private void writeProperties() {
178180

179181
for (MemberShape member : optionalMembers) {
180182
writer.pushState();
183+
var target = model.expectShape(member.getTarget());
181184

182185
var requiresField = false;
183-
if (member.hasTrait(SensitiveTrait.class)) {
186+
if (target.hasTrait(SensitiveTrait.class)) {
184187
writer.putContext("sensitive", true);
185188
writer.addStdlibImport("dataclasses", "field");
186189
requiresField = true;
@@ -191,7 +194,7 @@ private void writeProperties() {
191194
var defaultValue = "None";
192195
var defaultKey = "default";
193196
if (member.hasTrait(DefaultTrait.class)) {
194-
var target = model.expectShape(member.getTarget());
197+
195198
defaultValue = getDefaultValue(writer, member);
196199
if (target.isDocumentShape() || Set.of("list", "dict").contains(defaultValue)) {
197200
writer.addStdlibImport("dataclasses", "field");
@@ -206,7 +209,6 @@ private void writeProperties() {
206209
writer.putContext("defaultValue", defaultValue);
207210
writer.putContext("useField", requiresField);
208211

209-
var target = model.expectShape(member.getTarget());
210212
writer.putContext("quote", recursiveShapes.contains(target) ? "'" : "");
211213

212214
var memberName = symbolProvider.toMemberName(member);
@@ -412,7 +414,7 @@ def _consumer(schema: Schema, de: ShapeDeserializer) -> None:
412414
match schema.expect_member_index():
413415
${C|}
414416
case _:
415-
logger.debug(f"Unexpected member schema: {schema}")
417+
logger.debug("Unexpected member schema: %s", schema)
416418
417419
deserializer.read_struct($T, consumer=_consumer)
418420
return kwargs

codegen/core/src/main/java/software/amazon/smithy/python/codegen/generators/UnionGenerator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ def _consumer(self, schema: Schema, de: ShapeDeserializer) -> None:
162162
match schema.expect_member_index():
163163
${4C|}
164164
case _:
165-
logger.debug(f"Unexpected member schema: {schema}")
165+
logger.debug("Unexpected member schema: %s", schema)
166166
167167
def _set_result(self, value: $2T) -> None:
168168
if self._result is not None:

codegen/gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[versions]
22
junit5 = "5.12.0"
3-
smithy = "1.54.0"
3+
smithy = "1.55.0"
44
test-logger-plugin = "4.0.0"
55
spotbugs = "6.0.22"
66
spotless = "7.0.2"

packages/aws-event-stream/src/aws_event_stream/BUILD

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/aws-sdk-signers/pyproject.toml

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
[build-system]
2-
requires = ["setuptools", "setuptools-scm", "wheel"]
3-
build-backend = "setuptools.build_meta"
4-
51
[project]
62
name = "aws_sdk_signers"
3+
version = "0.0.2"
74
requires-python = ">=3.12"
85
authors = [
96
{name = "Amazon Web Services"},
@@ -26,13 +23,15 @@ classifiers = [
2623
"Programming Language :: Python :: Implementation :: CPython",
2724
"Topic :: Software Development :: Libraries"
2825
]
29-
dynamic = ["version"]
3026

31-
[tool.setuptools.dynamic]
32-
version = {attr = "aws_sdk_signers._version.__version__"}
27+
[build-system]
28+
requires = ["hatchling"]
29+
build-backend = "hatchling.build"
3330

34-
[tool.setuptools]
35-
include-package-data = false
31+
[tool.hatch.build]
32+
exclude = [
33+
"tests",
34+
]
3635

3736
[project.optional-dependencies]
3837
test = [
@@ -43,10 +42,6 @@ test = [
4342
"ruff",
4443
]
4544

46-
[tool.mypy]
47-
python_version = "3.12"
48-
strict = true
49-
5045
[tool.pytest.ini_options]
5146
asyncio_mode = "auto"
5247
addopts = "-W error"

packages/aws-sdk-signers/src/aws_sdk_signers/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
44
such as AioHTTP, Curl, Postman, Requests, urllib3, etc."""
55

66
from __future__ import annotations
7+
import importlib.metadata
78

89
from ._http import URI, AWSRequest, Field, Fields
910
from ._identity import AWSCredentialIdentity
1011
from ._io import AsyncBytesReader
11-
from ._version import __version__
1212
from .signers import AsyncSigV4Signer, SigV4Signer, SigV4SigningProperties
1313

1414
__license__ = "Apache-2.0"
15-
__version__ = __version__
15+
__version__ = importlib.metadata.version("aws-sdk-signers")
1616

1717
__all__ = (
1818
"AsyncBytesReader",

packages/aws-sdk-signers/src/aws_sdk_signers/_version.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

packages/smithy-event-stream/src/smithy_event_stream/BUILD

Lines changed: 0 additions & 13 deletions
This file was deleted.

packages/smithy-json/src/smithy_json/BUILD

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)