Skip to content

Commit 4b1bb06

Browse files
committed
ireally drop python<=3.7 support
Filter all code over `pyupgracde --py38-plus`. Signed-off-by: Tomasz Kłoczko <[email protected]>
1 parent ca4ddcb commit 4b1bb06

14 files changed

+605
-607
lines changed

integration/combination/test_function_with_all_event_types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def test_function_with_all_event_types(self):
6666
# assert LambdaEventSourceMappings
6767
event_source_mappings = lambda_client.list_event_source_mappings()["EventSourceMappings"]
6868
event_source_mapping_configurations = [x for x in event_source_mappings if x["FunctionArn"] == alias_arn]
69-
event_source_mapping_arns = set([x["EventSourceArn"] for x in event_source_mapping_configurations])
69+
event_source_mapping_arns = {x["EventSourceArn"] for x in event_source_mapping_configurations}
7070

7171
kinesis_client = self.client_provider.kinesis_client
7272
kinesis_stream_name = self.get_physical_id_by_type("AWS::Kinesis::Stream")

integration/helpers/request_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,4 @@ def _normalize_response_headers(self):
3434
# Need to check for response is None here since the __bool__ method checks 200 <= status < 400
3535
return {}
3636

37-
return dict((k.lower(), v) for k, v in self.response.headers.items())
37+
return {k.lower(): v for k, v in self.response.headers.items()}

integration/single/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-

samtranslator/internal/schema_source/aws_serverless_api.py

Lines changed: 125 additions & 125 deletions
Large diffs are not rendered by default.

samtranslator/internal/schema_source/aws_serverless_application.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ class Location(BaseModel):
2323

2424

2525
class Properties(BaseModel):
26-
Location: Union[str, Location] = properties("Location")
27-
NotificationARNs: Optional[PassThroughProp] = passthrough_prop(
26+
Location: str | Location = properties("Location")
27+
NotificationARNs: PassThroughProp | None = passthrough_prop(
2828
PROPERTIES_STEM,
2929
"NotificationARNs",
3030
["AWS::CloudFormation::Stack", "Properties", "NotificationARNs"],
3131
)
32-
Parameters: Optional[PassThroughProp] = passthrough_prop(
32+
Parameters: PassThroughProp | None = passthrough_prop(
3333
PROPERTIES_STEM,
3434
"Parameters",
3535
["AWS::CloudFormation::Stack", "Properties", "Parameters"],
3636
)
37-
Tags: Optional[Dict[str, Any]] = properties("Tags")
38-
TimeoutInMinutes: Optional[PassThroughProp] = passthrough_prop(
37+
Tags: dict[str, Any] | None = properties("Tags")
38+
TimeoutInMinutes: PassThroughProp | None = passthrough_prop(
3939
PROPERTIES_STEM,
4040
"TimeoutInMinutes",
4141
["AWS::CloudFormation::Stack", "Properties", "TimeoutInMinutes"],

samtranslator/internal/schema_source/aws_serverless_function.py

Lines changed: 274 additions & 274 deletions
Large diffs are not rendered by default.

samtranslator/internal/schema_source/aws_serverless_httpapi.py

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -24,80 +24,80 @@
2424

2525

2626
class OAuth2Authorizer(BaseModel):
27-
AuthorizationScopes: Optional[List[str]] = oauth2authorizer("AuthorizationScopes")
28-
IdentitySource: Optional[str] = oauth2authorizer("IdentitySource")
29-
JwtConfiguration: Optional[PassThroughProp] = oauth2authorizer("JwtConfiguration")
27+
AuthorizationScopes: list[str] | None = oauth2authorizer("AuthorizationScopes")
28+
IdentitySource: str | None = oauth2authorizer("IdentitySource")
29+
JwtConfiguration: PassThroughProp | None = oauth2authorizer("JwtConfiguration")
3030

3131

3232
class LambdaAuthorizerIdentity(BaseModel):
33-
Context: Optional[List[str]] = lambdauthorizeridentity("Context")
34-
Headers: Optional[List[str]] = lambdauthorizeridentity("Headers")
35-
QueryStrings: Optional[List[str]] = lambdauthorizeridentity("QueryStrings")
36-
ReauthorizeEvery: Optional[int] = lambdauthorizeridentity("ReauthorizeEvery")
37-
StageVariables: Optional[List[str]] = lambdauthorizeridentity("StageVariables")
33+
Context: list[str] | None = lambdauthorizeridentity("Context")
34+
Headers: list[str] | None = lambdauthorizeridentity("Headers")
35+
QueryStrings: list[str] | None = lambdauthorizeridentity("QueryStrings")
36+
ReauthorizeEvery: int | None = lambdauthorizeridentity("ReauthorizeEvery")
37+
StageVariables: list[str] | None = lambdauthorizeridentity("StageVariables")
3838

3939

4040
class LambdaAuthorizer(BaseModel):
4141
# TODO: Many tests use floats for the version string; docs only mention string
42-
AuthorizerPayloadFormatVersion: Union[Literal["1.0", "2.0"], float] = lambdaauthorizer(
42+
AuthorizerPayloadFormatVersion: Literal["1.0", "2.0"] | float = lambdaauthorizer(
4343
"AuthorizerPayloadFormatVersion"
4444
)
45-
EnableSimpleResponses: Optional[bool] = lambdaauthorizer("EnableSimpleResponses")
45+
EnableSimpleResponses: bool | None = lambdaauthorizer("EnableSimpleResponses")
4646
FunctionArn: SamIntrinsicable[str] = lambdaauthorizer("FunctionArn")
47-
FunctionInvokeRole: Optional[SamIntrinsicable[str]] = lambdaauthorizer("FunctionInvokeRole")
48-
EnableFunctionDefaultPermissions: Optional[bool] # TODO: add docs
49-
Identity: Optional[LambdaAuthorizerIdentity] = lambdaauthorizer("Identity")
47+
FunctionInvokeRole: SamIntrinsicable[str] | None = lambdaauthorizer("FunctionInvokeRole")
48+
EnableFunctionDefaultPermissions: bool | None # TODO: add docs
49+
Identity: LambdaAuthorizerIdentity | None = lambdaauthorizer("Identity")
5050

5151

5252
class Auth(BaseModel):
5353
# TODO: Docs doesn't say it's a map
54-
Authorizers: Optional[
55-
Dict[
54+
Authorizers: None | (
55+
dict[
5656
str,
57-
Union[
58-
OAuth2Authorizer,
59-
LambdaAuthorizer,
60-
],
57+
(
58+
OAuth2Authorizer |
59+
LambdaAuthorizer
60+
),
6161
]
62-
] = auth("Authorizers")
63-
DefaultAuthorizer: Optional[str] = auth("DefaultAuthorizer")
64-
EnableIamAuthorizer: Optional[bool] = auth("EnableIamAuthorizer")
62+
) = auth("Authorizers")
63+
DefaultAuthorizer: str | None = auth("DefaultAuthorizer")
64+
EnableIamAuthorizer: bool | None = auth("EnableIamAuthorizer")
6565

6666

6767
class CorsConfiguration(BaseModel):
68-
AllowCredentials: Optional[bool] = corsconfiguration("AllowCredentials")
69-
AllowHeaders: Optional[List[str]] = corsconfiguration("AllowHeaders")
70-
AllowMethods: Optional[List[str]] = corsconfiguration("AllowMethods")
71-
AllowOrigins: Optional[List[str]] = corsconfiguration("AllowOrigins")
72-
ExposeHeaders: Optional[List[str]] = corsconfiguration("ExposeHeaders")
73-
MaxAge: Optional[int] = corsconfiguration("MaxAge")
68+
AllowCredentials: bool | None = corsconfiguration("AllowCredentials")
69+
AllowHeaders: list[str] | None = corsconfiguration("AllowHeaders")
70+
AllowMethods: list[str] | None = corsconfiguration("AllowMethods")
71+
AllowOrigins: list[str] | None = corsconfiguration("AllowOrigins")
72+
ExposeHeaders: list[str] | None = corsconfiguration("ExposeHeaders")
73+
MaxAge: int | None = corsconfiguration("MaxAge")
7474

7575

7676
class DefinitionUri(BaseModel):
7777
Bucket: str = definitionuri("Bucket")
7878
Key: str = definitionuri("Key")
79-
Version: Optional[str] = definitionuri("Version")
79+
Version: str | None = definitionuri("Version")
8080

8181

8282
class Route53(BaseModel):
83-
DistributionDomainName: Optional[PassThroughProp] = route53("DistributionDomainName")
84-
EvaluateTargetHealth: Optional[PassThroughProp] = route53("EvaluateTargetHealth")
85-
HostedZoneId: Optional[PassThroughProp] = route53("HostedZoneId")
86-
HostedZoneName: Optional[PassThroughProp] = route53("HostedZoneName")
87-
IpV6: Optional[bool] = route53("IpV6")
88-
SetIdentifier: Optional[PassThroughProp] # TODO: add docs
89-
Region: Optional[PassThroughProp] # TODO: add docs
83+
DistributionDomainName: PassThroughProp | None = route53("DistributionDomainName")
84+
EvaluateTargetHealth: PassThroughProp | None = route53("EvaluateTargetHealth")
85+
HostedZoneId: PassThroughProp | None = route53("HostedZoneId")
86+
HostedZoneName: PassThroughProp | None = route53("HostedZoneName")
87+
IpV6: bool | None = route53("IpV6")
88+
SetIdentifier: PassThroughProp | None # TODO: add docs
89+
Region: PassThroughProp | None # TODO: add docs
9090

9191

9292
class Domain(BaseModel):
93-
BasePath: Optional[List[str]] = domain("BasePath")
93+
BasePath: list[str] | None = domain("BasePath")
9494
CertificateArn: PassThroughProp = domain("CertificateArn")
9595
DomainName: PassThroughProp = domain("DomainName")
96-
EndpointConfiguration: Optional[SamIntrinsicable[Literal["REGIONAL"]]] = domain("EndpointConfiguration")
97-
MutualTlsAuthentication: Optional[PassThroughProp] = domain("MutualTlsAuthentication")
98-
OwnershipVerificationCertificateArn: Optional[PassThroughProp] = domain("OwnershipVerificationCertificateArn")
99-
Route53: Optional[Route53] = domain("Route53")
100-
SecurityPolicy: Optional[PassThroughProp] = domain("SecurityPolicy")
96+
EndpointConfiguration: SamIntrinsicable[Literal["REGIONAL"]] | None = domain("EndpointConfiguration")
97+
MutualTlsAuthentication: PassThroughProp | None = domain("MutualTlsAuthentication")
98+
OwnershipVerificationCertificateArn: PassThroughProp | None = domain("OwnershipVerificationCertificateArn")
99+
Route53: Route53 | None = domain("Route53")
100+
SecurityPolicy: PassThroughProp | None = domain("SecurityPolicy")
101101

102102

103103
AccessLogSettings = Optional[PassThroughProp]
@@ -110,39 +110,39 @@ class Domain(BaseModel):
110110

111111

112112
class Properties(BaseModel):
113-
AccessLogSettings: Optional[AccessLogSettings] = properties("AccessLogSettings")
114-
Auth: Optional[Auth] = properties("Auth")
113+
AccessLogSettings: AccessLogSettings | None = properties("AccessLogSettings")
114+
Auth: Auth | None = properties("Auth")
115115
# TODO: Also string like in the docs?
116-
CorsConfiguration: Optional[CorsConfigurationType] = properties("CorsConfiguration")
117-
DefaultRouteSettings: Optional[DefaultRouteSettings] = properties("DefaultRouteSettings")
118-
DefinitionBody: Optional[DictStrAny] = properties("DefinitionBody")
119-
DefinitionUri: Optional[Union[str, DefinitionUri]] = properties("DefinitionUri")
120-
Description: Optional[str] = properties("Description")
121-
DisableExecuteApiEndpoint: Optional[PassThroughProp] = properties("DisableExecuteApiEndpoint")
122-
Domain: Optional[Domain] = properties("Domain")
123-
FailOnWarnings: Optional[FailOnWarnings] = properties("FailOnWarnings")
124-
RouteSettings: Optional[RouteSettings] = properties("RouteSettings")
125-
StageName: Optional[PassThroughProp] = properties("StageName")
126-
StageVariables: Optional[StageVariables] = properties("StageVariables")
127-
Tags: Optional[Tags] = properties("Tags")
128-
PropagateTags: Optional[bool] # TODO: add docs
129-
Name: Optional[PassThroughProp] = properties("Name")
116+
CorsConfiguration: CorsConfigurationType | None = properties("CorsConfiguration")
117+
DefaultRouteSettings: DefaultRouteSettings | None = properties("DefaultRouteSettings")
118+
DefinitionBody: DictStrAny | None = properties("DefinitionBody")
119+
DefinitionUri: str | DefinitionUri | None = properties("DefinitionUri")
120+
Description: str | None = properties("Description")
121+
DisableExecuteApiEndpoint: PassThroughProp | None = properties("DisableExecuteApiEndpoint")
122+
Domain: Domain | None = properties("Domain")
123+
FailOnWarnings: FailOnWarnings | None = properties("FailOnWarnings")
124+
RouteSettings: RouteSettings | None = properties("RouteSettings")
125+
StageName: PassThroughProp | None = properties("StageName")
126+
StageVariables: StageVariables | None = properties("StageVariables")
127+
Tags: Tags | None = properties("Tags")
128+
PropagateTags: bool | None # TODO: add docs
129+
Name: PassThroughProp | None = properties("Name")
130130

131131

132132
class Globals(BaseModel):
133-
Auth: Optional[Auth] = properties("Auth")
134-
AccessLogSettings: Optional[AccessLogSettings] = properties("AccessLogSettings")
135-
StageVariables: Optional[StageVariables] = properties("StageVariables")
136-
Tags: Optional[Tags] = properties("Tags")
137-
RouteSettings: Optional[RouteSettings] = properties("RouteSettings")
138-
FailOnWarnings: Optional[FailOnWarnings] = properties("FailOnWarnings")
139-
Domain: Optional[Domain] = properties("Domain")
140-
CorsConfiguration: Optional[CorsConfigurationType] = properties("CorsConfiguration")
141-
DefaultRouteSettings: Optional[DefaultRouteSettings] = properties("DefaultRouteSettings")
142-
PropagateTags: Optional[bool] # TODO: add docs
133+
Auth: Auth | None = properties("Auth")
134+
AccessLogSettings: AccessLogSettings | None = properties("AccessLogSettings")
135+
StageVariables: StageVariables | None = properties("StageVariables")
136+
Tags: Tags | None = properties("Tags")
137+
RouteSettings: RouteSettings | None = properties("RouteSettings")
138+
FailOnWarnings: FailOnWarnings | None = properties("FailOnWarnings")
139+
Domain: Domain | None = properties("Domain")
140+
CorsConfiguration: CorsConfigurationType | None = properties("CorsConfiguration")
141+
DefaultRouteSettings: DefaultRouteSettings | None = properties("DefaultRouteSettings")
142+
PropagateTags: bool | None # TODO: add docs
143143

144144

145145
class Resource(ResourceAttributes):
146146
Type: Literal["AWS::Serverless::HttpApi"]
147-
Properties: Optional[Properties]
148-
Connectors: Optional[Dict[str, EmbeddedConnector]]
147+
Properties: Properties | None
148+
Connectors: dict[str, EmbeddedConnector] | None

samtranslator/internal/schema_source/aws_serverless_layerversion.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,38 +29,38 @@ class ContentUri(BaseModel):
2929
"Key",
3030
["AWS::Lambda::LayerVersion.Content", "S3Key"],
3131
)
32-
Version: Optional[PassThroughProp] = passthrough_prop(
32+
Version: PassThroughProp | None = passthrough_prop(
3333
CONTENT_URI_STEM,
3434
"Version",
3535
["AWS::Lambda::LayerVersion.Content", "S3ObjectVersion"],
3636
)
3737

3838

3939
class Properties(BaseModel):
40-
CompatibleArchitectures: Optional[PassThroughProp] = passthrough_prop(
40+
CompatibleArchitectures: PassThroughProp | None = passthrough_prop(
4141
PROPERTIES_STEM,
4242
"CompatibleArchitectures",
4343
["AWS::Lambda::LayerVersion", "Properties", "CompatibleArchitectures"],
4444
)
45-
CompatibleRuntimes: Optional[PassThroughProp] = passthrough_prop(
45+
CompatibleRuntimes: PassThroughProp | None = passthrough_prop(
4646
PROPERTIES_STEM,
4747
"CompatibleRuntimes",
4848
["AWS::Lambda::LayerVersion", "Properties", "CompatibleRuntimes"],
4949
)
50-
PublishLambdaVersion: Optional[bool] # TODO: add docs
51-
ContentUri: Union[str, ContentUri] = properties("ContentUri")
52-
Description: Optional[PassThroughProp] = passthrough_prop(
50+
PublishLambdaVersion: bool | None # TODO: add docs
51+
ContentUri: str | ContentUri = properties("ContentUri")
52+
Description: PassThroughProp | None = passthrough_prop(
5353
PROPERTIES_STEM,
5454
"Description",
5555
["AWS::Lambda::LayerVersion", "Properties", "Description"],
5656
)
57-
LayerName: Optional[PassThroughProp] = properties("LayerName")
58-
LicenseInfo: Optional[PassThroughProp] = passthrough_prop(
57+
LayerName: PassThroughProp | None = properties("LayerName")
58+
LicenseInfo: PassThroughProp | None = passthrough_prop(
5959
PROPERTIES_STEM,
6060
"LicenseInfo",
6161
["AWS::Lambda::LayerVersion", "Properties", "LicenseInfo"],
6262
)
63-
RetentionPolicy: Optional[SamIntrinsicable[str]] = properties("RetentionPolicy")
63+
RetentionPolicy: SamIntrinsicable[str] | None = properties("RetentionPolicy")
6464

6565

6666
class Resource(ResourceAttributes):
@@ -69,4 +69,4 @@ class Resource(ResourceAttributes):
6969

7070

7171
class Globals(BaseModel):
72-
PublishLambdaVersion: Optional[bool] # TODO: add docs
72+
PublishLambdaVersion: bool | None # TODO: add docs

samtranslator/internal/schema_source/aws_serverless_simpletable.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,28 +35,28 @@ class PrimaryKey(BaseModel):
3535

3636

3737
class Properties(BaseModel):
38-
PointInTimeRecoverySpecification: Optional[PassThroughProp] # TODO: add docs
39-
PrimaryKey: Optional[PrimaryKey] = properties("PrimaryKey")
40-
ProvisionedThroughput: Optional[PassThroughProp] = passthrough_prop(
38+
PointInTimeRecoverySpecification: PassThroughProp | None # TODO: add docs
39+
PrimaryKey: PrimaryKey | None = properties("PrimaryKey")
40+
ProvisionedThroughput: PassThroughProp | None = passthrough_prop(
4141
PROPERTIES_STEM,
4242
"ProvisionedThroughput",
4343
["AWS::DynamoDB::Table", "Properties", "ProvisionedThroughput"],
4444
)
45-
SSESpecification: Optional[SSESpecification] = passthrough_prop(
45+
SSESpecification: SSESpecification | None = passthrough_prop(
4646
PROPERTIES_STEM,
4747
"SSESpecification",
4848
["AWS::DynamoDB::Table", "Properties", "SSESpecification"],
4949
)
50-
TableName: Optional[PassThroughProp] = passthrough_prop(
50+
TableName: PassThroughProp | None = passthrough_prop(
5151
PROPERTIES_STEM,
5252
"TableName",
5353
["AWS::DynamoDB::Table", "Properties", "TableName"],
5454
)
55-
Tags: Optional[Dict[str, Any]] = properties("Tags")
55+
Tags: dict[str, Any] | None = properties("Tags")
5656

5757

5858
class Globals(BaseModel):
59-
SSESpecification: Optional[SSESpecification] = passthrough_prop(
59+
SSESpecification: SSESpecification | None = passthrough_prop(
6060
PROPERTIES_STEM,
6161
"SSESpecification",
6262
["AWS::DynamoDB::Table", "Properties", "SSESpecification"],
@@ -65,5 +65,5 @@ class Globals(BaseModel):
6565

6666
class Resource(ResourceAttributes):
6767
Type: Literal["AWS::Serverless::SimpleTable"]
68-
Properties: Optional[Properties]
69-
Connectors: Optional[Dict[str, EmbeddedConnector]]
68+
Properties: Properties | None
69+
Connectors: dict[str, EmbeddedConnector] | None

0 commit comments

Comments
 (0)