localstack-core 4.7.1.dev22__py3-none-any.whl → 4.7.1.dev24__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. localstack/aws/api/apigateway/__init__.py +87 -110
  2. localstack/aws/api/core.py +2 -3
  3. localstack/aws/api/events/__init__.py +12 -16
  4. localstack/aws/api/logs/__init__.py +5 -8
  5. localstack/aws/api/pipes/__init__.py +24 -32
  6. localstack/aws/api/scheduler/__init__.py +14 -16
  7. localstack/aws/api/stepfunctions/__init__.py +88 -114
  8. localstack/aws/api/support/__init__.py +8 -9
  9. localstack/aws/chain.py +2 -2
  10. localstack/aws/client.py +7 -9
  11. localstack/aws/connect.py +40 -39
  12. localstack/aws/forwarder.py +5 -4
  13. localstack/aws/gateway.py +1 -3
  14. localstack/aws/handlers/analytics.py +1 -2
  15. localstack/aws/handlers/cors.py +4 -5
  16. localstack/aws/handlers/logging.py +1 -2
  17. localstack/aws/handlers/metric_handler.py +3 -4
  18. localstack/aws/handlers/service.py +5 -5
  19. localstack/aws/mocking.py +15 -24
  20. localstack/aws/protocol/op_router.py +11 -10
  21. localstack/aws/protocol/parser.py +16 -17
  22. localstack/aws/protocol/serializer.py +37 -40
  23. localstack/aws/protocol/service_router.py +13 -13
  24. localstack/aws/protocol/validate.py +5 -5
  25. localstack/aws/scaffold.py +8 -9
  26. localstack/aws/serving/edge.py +5 -6
  27. localstack/aws/serving/hypercorn.py +2 -2
  28. localstack/aws/serving/twisted.py +1 -2
  29. localstack/aws/serving/werkzeug.py +2 -2
  30. localstack/aws/skeleton.py +7 -8
  31. localstack/aws/spec.py +29 -30
  32. localstack/cli/localstack.py +6 -6
  33. localstack/cli/lpm.py +2 -2
  34. localstack/config.py +14 -15
  35. localstack/deprecations.py +5 -5
  36. localstack/dev/run/__main__.py +4 -4
  37. localstack/dev/run/paths.py +5 -5
  38. localstack/dns/models.py +2 -1
  39. localstack/dns/server.py +3 -2
  40. localstack/http/dispatcher.py +1 -2
  41. localstack/http/response.py +2 -2
  42. localstack/http/router.py +1 -1
  43. localstack/http/trace.py +2 -1
  44. localstack/logging/format.py +3 -3
  45. localstack/packages/api.py +5 -5
  46. localstack/packages/core.py +3 -3
  47. localstack/packages/debugpy.py +1 -3
  48. localstack/packages/ffmpeg.py +1 -2
  49. localstack/packages/java.py +1 -2
  50. localstack/packages/terraform.py +1 -2
  51. localstack/runtime/init.py +6 -7
  52. localstack/runtime/shutdown.py +2 -1
  53. localstack/services/apigateway/exporter.py +1 -2
  54. localstack/services/apigateway/helpers.py +6 -6
  55. localstack/services/apigateway/legacy/context.py +21 -21
  56. localstack/services/apigateway/legacy/helpers.py +20 -20
  57. localstack/services/apigateway/legacy/integration.py +7 -7
  58. localstack/services/apigateway/legacy/router_asf.py +2 -2
  59. localstack/services/apigateway/legacy/templates.py +5 -5
  60. localstack/services/apigateway/models.py +16 -16
  61. localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
  62. localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
  63. localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
  64. localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
  65. localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +1 -1
  66. localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
  67. localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
  68. localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +6 -6
  69. localstack/services/apigateway/next_gen/execute_api/integrations/http.py +9 -9
  70. localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
  71. localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
  72. localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
  73. localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
  74. localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
  75. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
  76. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
  77. localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
  78. localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
  79. localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
  80. localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
  81. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
  82. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
  83. localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
  84. localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
  85. localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
  86. localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
  87. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
  88. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
  89. localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +5 -5
  90. localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
  91. localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
  92. localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
  93. localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
  94. localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
  95. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
  96. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
  97. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
  98. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
  99. localstack/services/cdk/resource_providers/cdk_metadata.py +2 -2
  100. localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
  101. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
  102. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
  103. localstack/services/cloudformation/cfn_utils.py +1 -1
  104. localstack/services/cloudformation/deployment_utils.py +2 -2
  105. localstack/services/cloudformation/engine/changes.py +3 -3
  106. localstack/services/cloudformation/engine/entities.py +12 -12
  107. localstack/services/cloudformation/engine/parameters.py +3 -3
  108. localstack/services/cloudformation/engine/template_deployer.py +9 -10
  109. localstack/services/cloudformation/engine/transformers.py +5 -4
  110. localstack/services/cloudformation/engine/types.py +5 -4
  111. localstack/services/cloudformation/engine/v2/change_set_model.py +31 -9
  112. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
  113. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +62 -80
  114. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +15 -14
  115. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +5 -5
  116. localstack/services/cloudformation/provider_utils.py +2 -2
  117. localstack/services/cloudformation/resource_provider.py +10 -9
  118. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
  119. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
  120. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
  121. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
  122. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
  123. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
  124. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
  125. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
  126. localstack/services/cloudformation/scaffolding/__main__.py +8 -7
  127. localstack/services/cloudformation/scaffolding/propgen.py +2 -2
  128. localstack/services/cloudformation/stores.py +2 -3
  129. localstack/services/cloudformation/v2/entities.py +57 -36
  130. localstack/services/cloudformation/v2/provider.py +155 -29
  131. localstack/services/cloudwatch/alarm_scheduler.py +7 -7
  132. localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
  133. localstack/services/cloudwatch/models.py +5 -7
  134. localstack/services/cloudwatch/provider.py +12 -12
  135. localstack/services/cloudwatch/provider_v2.py +2 -4
  136. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
  137. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
  138. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
  139. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
  140. localstack/services/dynamodb/packages.py +1 -2
  141. localstack/services/dynamodb/provider.py +7 -8
  142. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
  143. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
  144. localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
  145. localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
  146. localstack/services/dynamodb/utils.py +13 -14
  147. localstack/services/dynamodb/v2/provider.py +6 -7
  148. localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
  149. localstack/services/dynamodbstreams/models.py +1 -3
  150. localstack/services/ec2/patches.py +4 -5
  151. localstack/services/ec2/provider.py +3 -3
  152. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
  153. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
  154. localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
  155. localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
  156. localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
  157. localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
  158. localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
  159. localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
  160. localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
  161. localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
  162. localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
  163. localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
  164. localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
  165. localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
  166. localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
  167. localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
  168. localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
  169. localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
  170. localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
  171. localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
  172. localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
  173. localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
  174. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
  175. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
  176. localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
  177. localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
  178. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
  179. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
  180. localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
  181. localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
  182. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +13 -13
  183. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
  184. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
  185. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
  186. localstack/services/ecr/resource_providers/aws_ecr_repository.py +17 -17
  187. localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
  188. localstack/services/edge.py +5 -5
  189. localstack/services/es/provider.py +19 -19
  190. localstack/services/events/archive.py +2 -2
  191. localstack/services/events/connection.py +5 -5
  192. localstack/services/events/event_bus.py +9 -9
  193. localstack/services/events/models.py +25 -25
  194. localstack/services/events/provider.py +12 -12
  195. localstack/services/events/replay.py +3 -3
  196. localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
  197. localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
  198. localstack/services/events/resource_providers/aws_events_connection.py +27 -27
  199. localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
  200. localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
  201. localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
  202. localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
  203. localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
  204. localstack/services/events/resource_providers/aws_events_rule.py +82 -82
  205. localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
  206. localstack/services/events/rule.py +15 -15
  207. localstack/services/events/target.py +5 -5
  208. localstack/services/events/utils.py +7 -7
  209. localstack/services/events/v1/models.py +1 -3
  210. localstack/services/events/v1/provider.py +10 -10
  211. localstack/services/firehose/models.py +1 -3
  212. localstack/services/firehose/provider.py +11 -12
  213. localstack/services/iam/iam_patches.py +5 -6
  214. localstack/services/iam/provider.py +4 -4
  215. localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
  216. localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
  217. localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
  218. localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
  219. localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
  220. localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
  221. localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
  222. localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
  223. localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
  224. localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
  225. localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
  226. localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
  227. localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
  228. localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
  229. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
  230. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
  231. localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
  232. localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
  233. localstack/services/kinesis/kinesis_mock_server.py +7 -8
  234. localstack/services/kinesis/models.py +2 -3
  235. localstack/services/kinesis/packages.py +3 -3
  236. localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
  237. localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
  238. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
  239. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
  240. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
  241. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
  242. localstack/services/kms/models.py +14 -17
  243. localstack/services/kms/provider.py +2 -3
  244. localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
  245. localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
  246. localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
  247. localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
  248. localstack/services/kms/utils.py +3 -2
  249. localstack/services/lambda_/api_utils.py +12 -12
  250. localstack/services/lambda_/custom_endpoints.py +2 -2
  251. localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +1 -1
  252. localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
  253. localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
  254. localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
  255. localstack/services/lambda_/invocation/assignment.py +1 -2
  256. localstack/services/lambda_/invocation/docker_runtime_executor.py +5 -4
  257. localstack/services/lambda_/invocation/execution_environment.py +4 -4
  258. localstack/services/lambda_/invocation/executor_endpoint.py +5 -5
  259. localstack/services/lambda_/invocation/internal_sqs_queue.py +1 -1
  260. localstack/services/lambda_/invocation/lambda_models.py +23 -23
  261. localstack/services/lambda_/invocation/lambda_service.py +4 -4
  262. localstack/services/lambda_/invocation/logs.py +2 -3
  263. localstack/services/lambda_/invocation/runtime_executor.py +3 -3
  264. localstack/services/lambda_/ldm.py +2 -3
  265. localstack/services/lambda_/packages.py +2 -3
  266. localstack/services/lambda_/provider.py +3 -3
  267. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
  268. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
  269. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
  270. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
  271. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
  272. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
  273. localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
  274. localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
  275. localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
  276. localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
  277. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
  278. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
  279. localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
  280. localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
  281. localstack/services/lambda_/resource_providers/aws_lambda_url.py +14 -14
  282. localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
  283. localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
  284. localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
  285. localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
  286. localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
  287. localstack/services/lambda_/runtimes.py +1 -3
  288. localstack/services/logs/models.py +1 -3
  289. localstack/services/logs/provider.py +3 -3
  290. localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
  291. localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
  292. localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
  293. localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
  294. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
  295. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
  296. localstack/services/moto.py +3 -3
  297. localstack/services/opensearch/cluster.py +13 -13
  298. localstack/services/opensearch/cluster_manager.py +13 -14
  299. localstack/services/opensearch/models.py +1 -3
  300. localstack/services/opensearch/packages.py +1 -2
  301. localstack/services/opensearch/provider.py +7 -8
  302. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
  303. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
  304. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
  305. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
  306. localstack/services/opensearch/versions.py +1 -3
  307. localstack/services/plugins.py +26 -25
  308. localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
  309. localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
  310. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
  311. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
  312. localstack/services/route53/models.py +1 -3
  313. localstack/services/route53/provider.py +1 -2
  314. localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
  315. localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
  316. localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
  317. localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
  318. localstack/services/route53resolver/models.py +8 -10
  319. localstack/services/route53resolver/provider.py +12 -12
  320. localstack/services/s3/codec.py +2 -2
  321. localstack/services/s3/cors.py +4 -4
  322. localstack/services/s3/models.py +72 -72
  323. localstack/services/s3/notifications.py +19 -19
  324. localstack/services/s3/presigned_url.py +6 -5
  325. localstack/services/s3/provider.py +13 -14
  326. localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
  327. localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
  328. localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
  329. localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
  330. localstack/services/s3/storage/core.py +4 -3
  331. localstack/services/s3/storage/ephemeral.py +7 -6
  332. localstack/services/s3/utils.py +11 -11
  333. localstack/services/s3/validation.py +1 -1
  334. localstack/services/s3/website_hosting.py +5 -5
  335. localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
  336. localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
  337. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
  338. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
  339. localstack/services/secretsmanager/provider.py +9 -11
  340. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
  341. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
  342. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
  343. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
  344. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
  345. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
  346. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
  347. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
  348. localstack/services/ses/provider.py +8 -8
  349. localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
  350. localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
  351. localstack/services/sns/models.py +25 -25
  352. localstack/services/sns/provider.py +1 -2
  353. localstack/services/sns/publisher.py +6 -7
  354. localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
  355. localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
  356. localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
  357. localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
  358. localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
  359. localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
  360. localstack/services/sqs/models.py +21 -22
  361. localstack/services/sqs/provider.py +19 -18
  362. localstack/services/sqs/query_api.py +2 -3
  363. localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
  364. localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
  365. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +4 -4
  366. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
  367. localstack/services/sqs/utils.py +3 -3
  368. localstack/services/ssm/provider.py +2 -3
  369. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
  370. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
  371. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
  372. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
  373. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
  374. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
  375. localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
  376. localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
  377. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
  378. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
  379. localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
  380. localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
  381. localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
  382. localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
  383. localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
  384. localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
  385. localstack/services/stepfunctions/asl/component/common/path/input_path.py +3 -3
  386. localstack/services/stepfunctions/asl/component/common/path/output_path.py +3 -3
  387. localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
  388. localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
  389. localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
  390. localstack/services/stepfunctions/asl/component/common/string/string_expression.py +2 -2
  391. localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
  392. localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
  393. localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +3 -3
  394. localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +2 -2
  395. localstack/services/stepfunctions/asl/component/program/program.py +8 -8
  396. localstack/services/stepfunctions/asl/component/state/state.py +10 -11
  397. localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
  398. localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
  399. localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +1 -3
  400. localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +8 -8
  401. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +6 -6
  402. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
  403. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
  404. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
  405. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
  406. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
  407. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
  408. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
  409. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
  410. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
  411. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
  412. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
  413. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
  414. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
  415. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
  416. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
  417. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +10 -11
  418. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
  419. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +4 -4
  420. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +1 -2
  421. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +6 -6
  422. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
  423. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
  424. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +15 -15
  425. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +5 -4
  426. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
  427. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
  428. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
  429. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
  430. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
  431. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
  432. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
  433. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
  434. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
  435. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +2 -2
  436. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
  437. localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +2 -4
  438. localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +3 -5
  439. localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
  440. localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
  441. localstack/services/stepfunctions/asl/eval/environment.py +15 -17
  442. localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
  443. localstack/services/stepfunctions/asl/eval/event/event_manager.py +9 -9
  444. localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
  445. localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
  446. localstack/services/stepfunctions/asl/eval/states.py +11 -11
  447. localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
  448. localstack/services/stepfunctions/asl/eval/variable_store.py +3 -3
  449. localstack/services/stepfunctions/asl/jsonata/jsonata.py +5 -4
  450. localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +1 -2
  451. localstack/services/stepfunctions/asl/parse/preprocessor.py +30 -30
  452. localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
  453. localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
  454. localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
  455. localstack/services/stepfunctions/backend/activity.py +4 -4
  456. localstack/services/stepfunctions/backend/alias.py +6 -6
  457. localstack/services/stepfunctions/backend/execution.py +25 -27
  458. localstack/services/stepfunctions/backend/execution_worker.py +7 -7
  459. localstack/services/stepfunctions/backend/state_machine.py +26 -26
  460. localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
  461. localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
  462. localstack/services/stepfunctions/mocking/mock_config.py +5 -5
  463. localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
  464. localstack/services/stepfunctions/provider.py +27 -37
  465. localstack/services/stepfunctions/quotas.py +2 -3
  466. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
  467. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
  468. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
  469. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
  470. localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
  471. localstack/services/stores.py +7 -7
  472. localstack/services/transcribe/packages.py +1 -3
  473. localstack/services/transcribe/provider.py +2 -2
  474. localstack/state/inspect.py +4 -4
  475. localstack/state/pickle.py +16 -15
  476. localstack/testing/aws/asf_utils.py +3 -2
  477. localstack/testing/aws/lambda_utils.py +15 -14
  478. localstack/testing/aws/util.py +3 -2
  479. localstack/testing/pytest/cloudformation/fixtures.py +13 -3
  480. localstack/testing/pytest/container.py +5 -4
  481. localstack/testing/pytest/filters.py +1 -3
  482. localstack/testing/pytest/fixtures.py +11 -11
  483. localstack/testing/pytest/marking.py +6 -6
  484. localstack/testing/pytest/path_filter.py +1 -1
  485. localstack/testing/pytest/stepfunctions/utils.py +1 -1
  486. localstack/testing/pytest/validation_tracking.py +3 -3
  487. localstack/testing/scenario/provisioning.py +11 -10
  488. localstack/testing/snapshots/transformer_utility.py +2 -2
  489. localstack/testing/testselection/matching.py +2 -2
  490. localstack/testing/testselection/opt_out.py +1 -1
  491. localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
  492. localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
  493. localstack/testing/testselection/testselection.py +2 -2
  494. localstack/utils/analytics/cli.py +2 -3
  495. localstack/utils/analytics/client.py +5 -5
  496. localstack/utils/analytics/events.py +2 -2
  497. localstack/utils/analytics/metrics/registry.py +1 -1
  498. localstack/utils/analytics/publisher.py +4 -4
  499. localstack/utils/analytics/service_request_aggregator.py +3 -3
  500. localstack/utils/aws/arns.py +2 -2
  501. localstack/utils/aws/aws_responses.py +14 -21
  502. localstack/utils/aws/aws_stack.py +7 -11
  503. localstack/utils/aws/dead_letter_queue.py +3 -4
  504. localstack/utils/aws/message_forwarding.py +9 -11
  505. localstack/utils/aws/request_context.py +4 -4
  506. localstack/utils/aws/templating.py +3 -3
  507. localstack/utils/batch_policy.py +2 -2
  508. localstack/utils/bootstrap.py +19 -20
  509. localstack/utils/collections.py +16 -23
  510. localstack/utils/config_listener.py +2 -2
  511. localstack/utils/container_networking.py +3 -3
  512. localstack/utils/container_utils/container_client.py +72 -75
  513. localstack/utils/container_utils/docker_cmd_client.py +33 -33
  514. localstack/utils/container_utils/docker_sdk_client.py +35 -35
  515. localstack/utils/crypto.py +2 -3
  516. localstack/utils/diagnose.py +11 -11
  517. localstack/utils/docker_utils.py +4 -4
  518. localstack/utils/files.py +1 -2
  519. localstack/utils/functions.py +2 -2
  520. localstack/utils/http.py +6 -6
  521. localstack/utils/iputils.py +2 -1
  522. localstack/utils/json.py +1 -1
  523. localstack/utils/net.py +10 -9
  524. localstack/utils/objects.py +10 -10
  525. localstack/utils/patch.py +5 -5
  526. localstack/utils/platform.py +2 -2
  527. localstack/utils/run.py +7 -7
  528. localstack/utils/scheduler.py +3 -2
  529. localstack/utils/strings.py +2 -2
  530. localstack/utils/tagging.py +3 -3
  531. localstack/utils/testutil.py +9 -9
  532. localstack/utils/threads.py +2 -2
  533. localstack/utils/xml.py +1 -1
  534. localstack/version.py +2 -2
  535. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/METADATA +1 -1
  536. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/RECORD +544 -544
  537. localstack_core-4.7.1.dev24.dist-info/plux.json +1 -0
  538. localstack_core-4.7.1.dev22.dist-info/plux.json +0 -1
  539. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack +0 -0
  540. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack-supervisor +0 -0
  541. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack.bat +0 -0
  542. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/WHEEL +0 -0
  543. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/entry_points.txt +0 -0
  544. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/licenses/LICENSE.txt +0 -0
  545. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  import datetime
2
2
  import threading
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, HistoryEventType
6
6
  from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
@@ -26,7 +26,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
26
26
  _termination_event: Final[threading.Event]
27
27
  _active_workers_num: int
28
28
 
29
- _terminated_with_error: Optional[ExecutionFailedEventDetails]
29
+ _terminated_with_error: ExecutionFailedEventDetails | None
30
30
 
31
31
  def __init__(self, workers_num: int):
32
32
  self._mutex = threading.Lock()
@@ -53,7 +53,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
53
53
  def wait(self):
54
54
  self._termination_event.wait()
55
55
 
56
- def get_exit_event_details(self) -> Optional[ExecutionFailedEventDetails]:
56
+ def get_exit_event_details(self) -> ExecutionFailedEventDetails | None:
57
57
  return self._terminated_with_error
58
58
 
59
59
 
@@ -84,7 +84,7 @@ class BranchesDecl(EvalComponent):
84
84
  branch_worker_pool.wait()
85
85
 
86
86
  # Propagate exception if parallel task failed.
87
- exit_event_details: Optional[ExecutionFailedEventDetails] = (
87
+ exit_event_details: ExecutionFailedEventDetails | None = (
88
88
  branch_worker_pool.get_exit_event_details()
89
89
  )
90
90
  if exit_event_details is not None:
@@ -1,5 +1,4 @@
1
1
  import copy
2
- from typing import Optional
3
2
 
4
3
  from localstack.aws.api.stepfunctions import HistoryEventType
5
4
  from localstack.services.stepfunctions.asl.component.common.catch.catch_outcome import CatchOutcome
@@ -25,7 +24,7 @@ class StateParallel(ExecutionState):
25
24
  # machine object must have fields named States and StartAt, whose meanings are exactly
26
25
  # like those in the top level of a state machine.
27
26
  branches: BranchesDecl
28
- parargs: Optional[Parargs]
27
+ parargs: Parargs | None
29
28
 
30
29
  def __init__(self):
31
30
  super().__init__(
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  from json import JSONDecodeError
3
- from typing import IO, Any, Final, Optional, Union
3
+ from typing import IO, Any, Final
4
4
 
5
5
  from localstack.aws.api.lambda_ import InvocationResponse
6
6
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
@@ -18,15 +18,15 @@ from localstack.utils.strings import to_bytes
18
18
 
19
19
 
20
20
  class LambdaFunctionErrorException(Exception):
21
- function_error: Final[Optional[str]]
21
+ function_error: Final[str | None]
22
22
  payload: Final[str]
23
23
 
24
- def __init__(self, function_error: Optional[str], payload: str):
24
+ def __init__(self, function_error: str | None, payload: str):
25
25
  self.function_error = function_error
26
26
  self.payload = payload
27
27
 
28
28
 
29
- def _from_payload(payload_streaming_body: IO[bytes]) -> Union[json, str]:
29
+ def _from_payload(payload_streaming_body: IO[bytes]) -> Any | str:
30
30
  """
31
31
  This method extracts the lambda payload. The payload may be a string or a JSON stringified object.
32
32
  In the first case, this function converts the output into a UTF-8 string, otherwise it parses the
@@ -75,7 +75,7 @@ def execute_lambda_function_integration(
75
75
  parameters=parameters, region=region, state_credentials=state_credentials
76
76
  )
77
77
 
78
- function_error: Optional[str] = invocation_response.get("FunctionError")
78
+ function_error: str | None = invocation_response.get("FunctionError")
79
79
  if function_error:
80
80
  payload_json = invocation_response["Payload"]
81
81
  payload_str = json.dumps(payload_json, separators=(",", ":"))
@@ -85,7 +85,7 @@ def execute_lambda_function_integration(
85
85
  env.stack.append(response)
86
86
 
87
87
 
88
- def to_payload_type(payload: Any) -> Optional[bytes]:
88
+ def to_payload_type(payload: Any) -> bytes | None:
89
89
  if isinstance(payload, bytes):
90
90
  return payload
91
91
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import abc
4
4
  from itertools import takewhile
5
- from typing import Final, Optional
5
+ from typing import Final
6
6
 
7
7
  from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
8
8
  from localstack.services.stepfunctions.asl.eval.environment import Environment
@@ -33,7 +33,7 @@ class ResourceARN:
33
33
  account: str,
34
34
  task_type: str,
35
35
  name: str,
36
- option: Optional[str],
36
+ option: str | None,
37
37
  ):
38
38
  self.arn = arn
39
39
  self.partition = partition
@@ -137,7 +137,7 @@ class ServiceResource(Resource):
137
137
  service_name: Final[str]
138
138
  api_name: Final[str]
139
139
  api_action: Final[str]
140
- condition: Final[Optional[str]]
140
+ condition: Final[str | None]
141
141
 
142
142
  def __init__(self, resource_arn: ResourceARN):
143
143
  super().__init__(resource_arn=resource_arn)
@@ -4,7 +4,7 @@ import abc
4
4
  import copy
5
5
  import json
6
6
  import logging
7
- from typing import Any, Final, Optional, Union
7
+ from typing import Any, Final
8
8
 
9
9
  from botocore.model import ListShape, OperationModel, Shape, StringShape, StructureShape
10
10
  from botocore.response import StreamingBody
@@ -147,8 +147,8 @@ class StateTaskService(StateTask, abc.ABC):
147
147
  parameters_bind_keys: list[str] = list(parameters.keys())
148
148
  for parameter_key in parameters_bind_keys:
149
149
  norm_parameter_key = camel_to_snake_case(parameter_key)
150
- norm_member_bind: Optional[tuple[str, Optional[StructureShape]]] = (
151
- norm_member_binds.get(norm_parameter_key)
150
+ norm_member_bind: tuple[str, StructureShape | None] | None = norm_member_binds.get(
151
+ norm_parameter_key
152
152
  )
153
153
  if norm_member_bind is not None:
154
154
  norm_member_bind_key, norm_member_bind_shape = norm_member_bind
@@ -203,19 +203,19 @@ class StateTaskService(StateTask, abc.ABC):
203
203
 
204
204
  response[norm_response_key] = response_value
205
205
 
206
- def _get_boto_service_name(self, boto_service_name: Optional[str] = None) -> str:
206
+ def _get_boto_service_name(self, boto_service_name: str | None = None) -> str:
207
207
  api_name = boto_service_name or self.resource.api_name
208
208
  return self._SERVICE_NAME_SFN_TO_BOTO_OVERRIDES.get(api_name, api_name)
209
209
 
210
- def _get_boto_service_action(self, service_action_name: Optional[str] = None) -> str:
210
+ def _get_boto_service_action(self, service_action_name: str | None = None) -> str:
211
211
  api_action = service_action_name or self.resource.api_action
212
212
  return camel_to_snake_case(api_action)
213
213
 
214
214
  def _normalise_parameters(
215
215
  self,
216
216
  parameters: dict,
217
- boto_service_name: Optional[str] = None,
218
- service_action_name: Optional[str] = None,
217
+ boto_service_name: str | None = None,
218
+ service_action_name: str | None = None,
219
219
  ) -> None:
220
220
  boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
221
221
  service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
@@ -228,8 +228,8 @@ class StateTaskService(StateTask, abc.ABC):
228
228
  def _normalise_response(
229
229
  self,
230
230
  response: Any,
231
- boto_service_name: Optional[str] = None,
232
- service_action_name: Optional[str] = None,
231
+ boto_service_name: str | None = None,
232
+ service_action_name: str | None = None,
233
233
  ) -> None:
234
234
  boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
235
235
  service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
@@ -239,7 +239,7 @@ class StateTaskService(StateTask, abc.ABC):
239
239
  if output_shape is not None:
240
240
  self._from_boto_response(response, output_shape) # noqa
241
241
 
242
- def _verify_size_quota(self, env: Environment, value: Union[str, json]) -> None:
242
+ def _verify_size_quota(self, env: Environment, value: str | json) -> None:
243
243
  is_within: bool = is_within_size_quota(value)
244
244
  if is_within:
245
245
  return
@@ -4,7 +4,7 @@ import http
4
4
  import json
5
5
  import logging
6
6
  from json import JSONDecodeError
7
- from typing import Any, Final, Optional, TypedDict
7
+ from typing import Any, Final, TypedDict
8
8
  from urllib.parse import urlencode, urljoin, urlparse
9
9
 
10
10
  import requests
@@ -76,13 +76,13 @@ class AuthType(str):
76
76
  class TaskParameters(TypedDict):
77
77
  ApiEndpoint: ApiEndpoint
78
78
  Method: Method
79
- Headers: Optional[Headers]
80
- Stage: Optional[Stage]
81
- Path: Optional[Path]
82
- QueryParameters: Optional[QueryParameters]
83
- RequestBody: Optional[RequestBody]
84
- AllowNullValues: Optional[AllowNullValues]
85
- AuthType: Optional[AuthType]
79
+ Headers: Headers | None
80
+ Stage: Stage | None
81
+ Path: Path | None
82
+ QueryParameters: QueryParameters | None
83
+ RequestBody: RequestBody | None
84
+ AllowNullValues: AllowNullValues | None
85
+ AuthType: AuthType | None
86
86
 
87
87
 
88
88
  class InvokeOutput(TypedDict):
@@ -131,14 +131,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
131
131
  def __init__(self):
132
132
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
133
133
 
134
- def _get_supported_parameters(self) -> Optional[set[str]]:
134
+ def _get_supported_parameters(self) -> set[str] | None:
135
135
  return self._SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
136
136
 
137
137
  def _normalise_parameters(
138
138
  self,
139
139
  parameters: dict,
140
- boto_service_name: Optional[str] = None,
141
- service_action_name: Optional[str] = None,
140
+ boto_service_name: str | None = None,
141
+ service_action_name: str | None = None,
142
142
  ) -> None:
143
143
  # ApiGateway does not support botocore request relay.
144
144
  pass
@@ -146,14 +146,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
146
146
  def _normalise_response(
147
147
  self,
148
148
  response: Any,
149
- boto_service_name: Optional[str] = None,
150
- service_action_name: Optional[str] = None,
149
+ boto_service_name: str | None = None,
150
+ service_action_name: str | None = None,
151
151
  ) -> None:
152
152
  # ApiGateway does not support botocore request relay.
153
153
  pass
154
154
 
155
155
  @staticmethod
156
- def _query_parameters_of(parameters: TaskParameters) -> Optional[str]:
156
+ def _query_parameters_of(parameters: TaskParameters) -> str | None:
157
157
  query_str = None
158
158
  query_parameters = parameters.get("QueryParameters")
159
159
  # TODO: add support for AllowNullValues.
@@ -167,7 +167,7 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
167
167
  return query_str
168
168
 
169
169
  @staticmethod
170
- def _headers_of(parameters: TaskParameters) -> Optional[dict]:
170
+ def _headers_of(parameters: TaskParameters) -> dict | None:
171
171
  headers = parameters.get("Headers", dict())
172
172
  if headers:
173
173
  for key in headers.keys():
@@ -1,4 +1,5 @@
1
- from typing import Any, Callable, Final, Optional
1
+ from collections.abc import Callable
2
+ from typing import Any, Final
2
3
 
3
4
  from botocore.exceptions import ClientError
4
5
  from moto.batch.utils import JobStatus
@@ -62,7 +63,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
62
63
  def __init__(self):
63
64
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
64
65
 
65
- def _get_supported_parameters(self) -> Optional[set[str]]:
66
+ def _get_supported_parameters(self) -> set[str] | None:
66
67
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
67
68
 
68
69
  @staticmethod
@@ -139,7 +140,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
139
140
  resource_runtime_part: ResourceRuntimePart,
140
141
  normalised_parameters: dict,
141
142
  state_credentials: StateCredentials,
142
- ) -> Callable[[], Optional[Any]]:
143
+ ) -> Callable[[], Any | None]:
143
144
  batch_client = boto_client_for(
144
145
  service="batch",
145
146
  region=resource_runtime_part.region,
@@ -148,7 +149,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
148
149
  submission_output: dict = env.stack.pop()
149
150
  job_id = submission_output["JobId"]
150
151
 
151
- def _sync_resolver() -> Optional[dict]:
152
+ def _sync_resolver() -> dict | None:
152
153
  describe_jobs_response = batch_client.describe_jobs(jobs=[job_id])
153
154
  describe_jobs = describe_jobs_response["jobs"]
154
155
  if describe_jobs:
@@ -2,7 +2,8 @@ import abc
2
2
  import json
3
3
  import threading
4
4
  import time
5
- from typing import Any, Callable, Final, Optional
5
+ from collections.abc import Callable
6
+ from typing import Any, Final
6
7
 
7
8
  from localstack.aws.api.stepfunctions import (
8
9
  HistoryEventExecutionDataDetails,
@@ -67,7 +68,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
67
68
  resource_runtime_part: ResourceRuntimePart,
68
69
  normalised_parameters: dict,
69
70
  state_credentials: StateCredentials,
70
- ) -> Callable[[], Optional[Any]]:
71
+ ) -> Callable[[], Any | None]:
71
72
  raise RuntimeError(
72
73
  f"Unsupported .sync callback procedure in resource {self.resource.resource_arn}"
73
74
  )
@@ -78,7 +79,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
78
79
  resource_runtime_part: ResourceRuntimePart,
79
80
  normalised_parameters: dict,
80
81
  state_credentials: StateCredentials,
81
- ) -> Callable[[], Optional[Any]]:
82
+ ) -> Callable[[], Any | None]:
82
83
  raise RuntimeError(
83
84
  f"Unsupported .sync2 callback procedure in resource {self.resource.resource_arn}"
84
85
  )
@@ -88,9 +89,9 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
88
89
  env: Environment,
89
90
  timeout_seconds: int,
90
91
  callback_endpoint: CallbackEndpoint,
91
- heartbeat_endpoint: Optional[HeartbeatEndpoint],
92
+ heartbeat_endpoint: HeartbeatEndpoint | None,
92
93
  ) -> CallbackOutcome:
93
- outcome: Optional[CallbackOutcome]
94
+ outcome: CallbackOutcome | None
94
95
  if heartbeat_endpoint is not None:
95
96
  outcome = self._wait_for_task_token_heartbeat(
96
97
  env, callback_endpoint, heartbeat_endpoint
@@ -104,12 +105,12 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
104
105
  def _eval_sync(
105
106
  self,
106
107
  env: Environment,
107
- sync_resolver: Callable[[], Optional[Any]],
108
- timeout_seconds: Optional[int],
109
- callback_endpoint: Optional[CallbackEndpoint],
110
- heartbeat_endpoint: Optional[HeartbeatEndpoint],
108
+ sync_resolver: Callable[[], Any | None],
109
+ timeout_seconds: int | None,
110
+ callback_endpoint: CallbackEndpoint | None,
111
+ heartbeat_endpoint: HeartbeatEndpoint | None,
111
112
  ) -> CallbackOutcome | Any:
112
- callback_output: Optional[CallbackOutcome] = None
113
+ callback_output: CallbackOutcome | None = None
113
114
 
114
115
  # Listen for WaitForTaskToken signals if an endpoint is provided.
115
116
  if callback_endpoint is not None:
@@ -134,7 +135,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
134
135
  # an exception in this thread will invalidate env, and therefore the worker thread.
135
136
  # hence why here there are no explicit stopping logic for thread_wait_for_task_token.
136
137
 
137
- sync_result: Optional[Any] = None
138
+ sync_result: Any | None = None
138
139
  while env.is_running():
139
140
  sync_result = sync_resolver()
140
141
  if callback_output or sync_result:
@@ -154,7 +155,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
154
155
  task_output = env.stack.pop()
155
156
 
156
157
  # Initialise the waitForTaskToken Callback endpoint for this task if supported.
157
- callback_endpoint: Optional[CallbackEndpoint] = None
158
+ callback_endpoint: CallbackEndpoint | None = None
158
159
  if ResourceCondition.WaitForTaskToken in self._supported_integration_patterns:
159
160
  callback_id = env.states.context_object.context_object_data["Task"]["Token"]
160
161
  callback_endpoint = env.callback_pool_manager.get(callback_id)
@@ -164,7 +165,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
164
165
  timeout_seconds = env.stack.pop()
165
166
 
166
167
  # Setup resources for heartbeat workloads if necessary.
167
- heartbeat_endpoint: Optional[HeartbeatEndpoint] = None
168
+ heartbeat_endpoint: HeartbeatEndpoint | None = None
168
169
  if self.heartbeat:
169
170
  self.heartbeat.eval(env=env)
170
171
  heartbeat_seconds = env.stack.pop()
@@ -240,7 +241,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
240
241
  self,
241
242
  timeout_seconds: int,
242
243
  callback_endpoint: CallbackEndpoint,
243
- ) -> Optional[CallbackOutcome]:
244
+ ) -> CallbackOutcome | None:
244
245
  # Awaits a callback notification and returns the outcome received.
245
246
  # If the operation times out or is interrupted it returns None.
246
247
 
@@ -249,7 +250,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
249
250
  # discarded by the main process.
250
251
  # Note: although this is the same timeout value, this can only decay strictly after the first timeout
251
252
  # started as it is invoked strictly later.
252
- outcome: Optional[CallbackOutcome] = callback_endpoint.wait(timeout=timeout_seconds)
253
+ outcome: CallbackOutcome | None = callback_endpoint.wait(timeout=timeout_seconds)
253
254
  return outcome
254
255
 
255
256
  def _wait_for_task_token_heartbeat( # noqa
@@ -257,7 +258,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
257
258
  env: Environment,
258
259
  callback_endpoint: CallbackEndpoint,
259
260
  heartbeat_endpoint: HeartbeatEndpoint,
260
- ) -> Optional[CallbackOutcome]:
261
+ ) -> CallbackOutcome | None:
261
262
  outcome = None
262
263
  while (
263
264
  env.is_running()
@@ -285,7 +286,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
285
286
  self, env: Environment, ex: CallbackOutcomeFailureError
286
287
  ) -> FailureEvent:
287
288
  callback_outcome_failure: CallbackOutcomeFailure = ex.callback_outcome_failure
288
- error: Optional[str] = callback_outcome_failure.error
289
+ error: str | None = callback_outcome_failure.error
289
290
  return FailureEvent(
290
291
  env=env,
291
292
  error_name=CustomErrorName(error_name=error),
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from botocore.exceptions import ClientError
4
4
 
@@ -76,7 +76,7 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {
76
76
 
77
77
 
78
78
  class StateTaskServiceDynamoDB(StateTaskService):
79
- def _get_supported_parameters(self) -> Optional[set[str]]:
79
+ def _get_supported_parameters(self) -> set[str] | None:
80
80
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
81
81
 
82
82
  @staticmethod
@@ -1,4 +1,5 @@
1
- from typing import Any, Callable, Final, Optional
1
+ from collections.abc import Callable
2
+ from typing import Any, Final
2
3
 
3
4
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
4
5
  StateCredentials,
@@ -42,7 +43,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
42
43
  def __init__(self):
43
44
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
44
45
 
45
- def _get_supported_parameters(self) -> Optional[set[str]]:
46
+ def _get_supported_parameters(self) -> set[str] | None:
46
47
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
47
48
 
48
49
  def _before_eval_execution(
@@ -102,7 +103,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
102
103
  resource_runtime_part: ResourceRuntimePart,
103
104
  normalised_parameters: dict,
104
105
  state_credentials: StateCredentials,
105
- ) -> Callable[[], Optional[Any]]:
106
+ ) -> Callable[[], Any | None]:
106
107
  ecs_client = boto_client_for(
107
108
  service="ecs",
108
109
  region=resource_runtime_part.region,
@@ -112,7 +113,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
112
113
  task_arn: str = submission_output["Tasks"][0]["TaskArn"]
113
114
  cluster_arn: str = submission_output["Tasks"][0]["ClusterArn"]
114
115
 
115
- def _sync_resolver() -> Optional[dict]:
116
+ def _sync_resolver() -> dict | None:
116
117
  describe_tasks_output = ecs_client.describe_tasks(cluster=cluster_arn, tasks=[task_arn])
117
118
  last_status: str = describe_tasks_output["tasks"][0]["lastStatus"]
118
119
 
@@ -1,5 +1,5 @@
1
1
  import json
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
5
5
  from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
@@ -33,9 +33,9 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {"putevents": {"Entr
33
33
 
34
34
 
35
35
  class SfnFailedEntryCountException(RuntimeError):
36
- cause: Final[Optional[dict]]
36
+ cause: Final[dict | None]
37
37
 
38
- def __init__(self, cause: Optional[dict]):
38
+ def __init__(self, cause: dict | None):
39
39
  super().__init__(json.dumps(cause))
40
40
  self.cause = cause
41
41
 
@@ -44,7 +44,7 @@ class StateTaskServiceEvents(StateTaskServiceCallback):
44
44
  def __init__(self):
45
45
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
46
46
 
47
- def _get_supported_parameters(self) -> Optional[set[str]]:
47
+ def _get_supported_parameters(self) -> set[str] | None:
48
48
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
49
49
 
50
50
  def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
@@ -1,4 +1,5 @@
1
- from typing import Any, Callable, Final, Optional
1
+ from collections.abc import Callable
2
+ from typing import Any, Final
2
3
 
3
4
  import boto3
4
5
  from botocore.exceptions import ClientError
@@ -73,7 +74,7 @@ _API_ACTION_HANDLER_TYPE = Callable[
73
74
  ]
74
75
  # The type of (sync)handler builder function for StateTaskServiceGlue objects.
75
76
  _API_ACTION_HANDLER_BUILDER_TYPE = Callable[
76
- [Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[], Optional[Any]]
77
+ [Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[], Any | None]
77
78
  ]
78
79
 
79
80
 
@@ -81,7 +82,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
81
82
  def __init__(self):
82
83
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
83
84
 
84
- def _get_supported_parameters(self) -> Optional[set[str]]:
85
+ def _get_supported_parameters(self) -> set[str] | None:
85
86
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
86
87
 
87
88
  def _get_api_action_handler(self) -> _API_ACTION_HANDLER_TYPE:
@@ -174,7 +175,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
174
175
  resource_runtime_part: ResourceRuntimePart,
175
176
  normalised_parameters: dict,
176
177
  state_credentials: StateCredentials,
177
- ) -> Callable[[], Optional[Any]]:
178
+ ) -> Callable[[], Any | None]:
178
179
  # Poll the job run state from glue, using GetJobRun until the job has terminated. Hence, append the output
179
180
  # of GetJobRun to the state.
180
181
 
@@ -188,7 +189,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
188
189
  resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
189
190
  )
190
191
 
191
- def _sync_resolver() -> Optional[Any]:
192
+ def _sync_resolver() -> Any | None:
192
193
  # Sample GetJobRun until completion.
193
194
  get_job_run_response: dict = glue_client.get_job_run(JobName=job_name, RunId=job_run_id)
194
195
  job_run: dict = get_job_run_response["JobRun"]
@@ -232,7 +233,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
232
233
  resource_runtime_part: ResourceRuntimePart,
233
234
  normalised_parameters: dict,
234
235
  state_credentials: StateCredentials,
235
- ) -> Callable[[], Optional[Any]]:
236
+ ) -> Callable[[], Any | None]:
236
237
  sync_resolver_builder = self._get_api_action_sync_builder_handler()
237
238
  sync_resolver = sync_resolver_builder(
238
239
  env, resource_runtime_part, normalised_parameters, state_credentials
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from botocore.exceptions import ClientError
6
6
 
@@ -50,7 +50,7 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
50
50
  def __init__(self):
51
51
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
52
52
 
53
- def _get_supported_parameters(self) -> Optional[set[str]]:
53
+ def _get_supported_parameters(self) -> set[str] | None:
54
54
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
55
55
 
56
56
  @staticmethod
@@ -105,8 +105,8 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
105
105
  def _normalise_parameters(
106
106
  self,
107
107
  parameters: dict,
108
- boto_service_name: Optional[str] = None,
109
- service_action_name: Optional[str] = None,
108
+ boto_service_name: str | None = None,
109
+ service_action_name: str | None = None,
110
110
  ) -> None:
111
111
  # Run Payload value casting before normalisation.
112
112
  if "Payload" in parameters:
@@ -1,5 +1,6 @@
1
1
  import json
2
- from typing import Any, Callable, Final, Optional
2
+ from collections.abc import Callable
3
+ from typing import Any, Final
3
4
 
4
5
  from botocore.exceptions import ClientError
5
6
 
@@ -52,7 +53,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
52
53
  def __init__(self):
53
54
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
54
55
 
55
- def _get_supported_parameters(self) -> Optional[set[str]]:
56
+ def _get_supported_parameters(self) -> set[str] | None:
56
57
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
57
58
 
58
59
  def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
@@ -91,8 +92,8 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
91
92
  def _normalise_parameters(
92
93
  self,
93
94
  parameters: dict,
94
- boto_service_name: Optional[str] = None,
95
- service_action_name: Optional[str] = None,
95
+ boto_service_name: str | None = None,
96
+ service_action_name: str | None = None,
96
97
  ) -> None:
97
98
  if service_action_name is None:
98
99
  if self._get_boto_service_action() == "start_execution":
@@ -115,7 +116,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
115
116
  resource_runtime_part: ResourceRuntimePart,
116
117
  normalised_parameters: dict,
117
118
  state_credentials: StateCredentials,
118
- ) -> Callable[[], Optional[Any]]:
119
+ ) -> Callable[[], Any | None]:
119
120
  sfn_client = boto_client_for(
120
121
  service="stepfunctions",
121
122
  region=resource_runtime_part.region,
@@ -124,7 +125,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
124
125
  submission_output: dict = env.stack.pop()
125
126
  execution_arn: str = submission_output["ExecutionArn"]
126
127
 
127
- def _sync_resolver() -> Optional[Any]:
128
+ def _sync_resolver() -> Any | None:
128
129
  describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
129
130
  describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
130
131
  DescribeExecutionOutput, describe_execution_output
@@ -176,7 +177,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
176
177
  resource_runtime_part: ResourceRuntimePart,
177
178
  normalised_parameters: dict,
178
179
  state_credentials: StateCredentials,
179
- ) -> Callable[[], Optional[Any]]:
180
+ ) -> Callable[[], Any | None]:
180
181
  sfn_client = boto_client_for(
181
182
  region=resource_runtime_part.region,
182
183
  service="stepfunctions",
@@ -185,7 +186,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
185
186
  submission_output: dict = env.stack.pop()
186
187
  execution_arn: str = submission_output["ExecutionArn"]
187
188
 
188
- def _sync2_resolver() -> Optional[Any]:
189
+ def _sync2_resolver() -> Any | None:
189
190
  describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
190
191
  describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
191
192
  DescribeExecutionOutput, describe_execution_output
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from botocore.exceptions import ClientError
4
4
 
@@ -46,7 +46,7 @@ class StateTaskServiceSns(StateTaskServiceCallback):
46
46
  def __init__(self):
47
47
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
48
48
 
49
- def _get_supported_parameters(self) -> Optional[set[str]]:
49
+ def _get_supported_parameters(self) -> set[str] | None:
50
50
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
51
51
 
52
52
  def _from_error(self, env: Environment, ex: Exception) -> FailureEvent: