localstack-core 4.7.1.dev23__py3-none-any.whl → 4.7.1.dev25__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 +38 -12
  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 +9 -8
  112. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
  113. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +9 -9
  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 +7 -7
  130. localstack/services/cloudformation/v2/provider.py +10 -10
  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 +3 -2
  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.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/METADATA +1 -1
  536. {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/RECORD +544 -544
  537. localstack_core-4.7.1.dev25.dist-info/plux.json +1 -0
  538. localstack_core-4.7.1.dev23.dist-info/plux.json +0 -1
  539. {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev25.data}/scripts/localstack +0 -0
  540. {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev25.data}/scripts/localstack-supervisor +0 -0
  541. {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev25.data}/scripts/localstack.bat +0 -0
  542. {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/WHEEL +0 -0
  543. {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/entry_points.txt +0 -0
  544. {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/licenses/LICENSE.txt +0 -0
  545. {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev25.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- from typing import Any, Final, Optional
1
+ from typing import Any, Final
2
2
 
3
3
  from botocore.exceptions import ClientError
4
4
 
@@ -45,7 +45,7 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
45
45
  def __init__(self):
46
46
  super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
47
47
 
48
- def _get_supported_parameters(self) -> Optional[set[str]]:
48
+ def _get_supported_parameters(self) -> set[str] | None:
49
49
  return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
50
50
 
51
51
  def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
@@ -70,8 +70,8 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
70
70
  def _normalise_response(
71
71
  self,
72
72
  response: Any,
73
- boto_service_name: Optional[str] = None,
74
- service_action_name: Optional[str] = None,
73
+ boto_service_name: str | None = None,
74
+ service_action_name: str | None = None,
75
75
  ) -> None:
76
76
  super()._normalise_response(
77
77
  response=response,
@@ -31,8 +31,8 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
31
31
 
32
32
  class StateTask(ExecutionState, abc.ABC):
33
33
  resource: Resource
34
- parargs: Optional[Parargs]
35
- credentials: Optional[Credentials]
34
+ parargs: Parargs | None
35
+ credentials: Credentials | None
36
36
 
37
37
  def __init__(self):
38
38
  super(StateTask, self).__init__(
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import Union
3
+ from typing import Any
4
4
 
5
5
  from botocore.exceptions import ClientError
6
6
 
@@ -94,7 +94,7 @@ class StateTaskLambda(StateTask):
94
94
  ),
95
95
  )
96
96
 
97
- def _verify_size_quota(self, env: Environment, value: Union[str, json]) -> None:
97
+ def _verify_size_quota(self, env: Environment, value: str | Any) -> None:
98
98
  is_within: bool = is_within_size_quota(value=value)
99
99
  if is_within:
100
100
  return
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
4
2
  from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
5
3
  CustomErrorName,
@@ -22,8 +20,8 @@ class StateFail(CommonStateField):
22
20
  state_entered_event_type=HistoryEventType.FailStateEntered,
23
21
  state_exited_event_type=None,
24
22
  )
25
- self.cause: Optional[CauseDecl] = None
26
- self.error: Optional[ErrorDecl] = None
23
+ self.cause: CauseDecl | None = None
24
+ self.error: ErrorDecl | None = None
27
25
 
28
26
  def from_state_props(self, state_props: StateProps) -> None:
29
27
  super(StateFail, self).from_state_props(state_props)
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from localstack.aws.api.stepfunctions import (
4
2
  HistoryEventType,
5
3
  )
@@ -21,17 +19,17 @@ class StatePass(CommonStateField):
21
19
  # Result (Optional)
22
20
  # Refers to the output of a virtual state_task that is passed on to the next state. If you include the ResultPath
23
21
  # field in your state machine definition, Result is placed as specified by ResultPath and passed on to the
24
- self.result: Optional[Result] = None
22
+ self.result: Result | None = None
25
23
 
26
24
  # ResultPath (Optional)
27
25
  # Specifies where to place the output (relative to the input) of the virtual state_task specified in Result. The input
28
26
  # is further filtered as specified by the OutputPath field (if present) before being used as the state's output.
29
- self.result_path: Optional[ResultPath] = None
27
+ self.result_path: ResultPath | None = None
30
28
 
31
29
  # Parameters (Optional)
32
30
  # Creates a collection of key-value pairs that will be passed as input. You can specify Parameters as a static
33
31
  # value or select from the input using a path.
34
- self.parameters: Optional[Parameters] = None
32
+ self.parameters: Parameters | None = None
35
33
 
36
34
  def from_state_props(self, state_props: StateProps) -> None:
37
35
  super(StatePass, self).from_state_props(state_props)
@@ -1,6 +1,6 @@
1
1
  import datetime
2
2
  import re
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.failure_event import (
@@ -47,7 +47,7 @@ class Timestamp(WaitFunction):
47
47
  return re.match(TIMESTAMP_PATTERN, timestamp) is not None
48
48
 
49
49
  @staticmethod
50
- def _from_timestamp_string(timestamp: str) -> Optional[datetime]:
50
+ def _from_timestamp_string(timestamp: str) -> datetime.datetime | None:
51
51
  if not Timestamp._is_valid_timestamp_pattern(timestamp):
52
52
  return None
53
53
  try:
@@ -1,7 +1,7 @@
1
1
  import abc
2
2
  from collections import OrderedDict
3
3
  from threading import Event, Lock
4
- from typing import Final, Optional
4
+ from typing import Final
5
5
 
6
6
  from localstack.aws.api.stepfunctions import ActivityDoesNotExist, Arn
7
7
  from localstack.services.stepfunctions.backend.activity import Activity, ActivityTask
@@ -26,10 +26,10 @@ class CallbackOutcomeSuccess(CallbackOutcome):
26
26
 
27
27
 
28
28
  class CallbackOutcomeFailure(CallbackOutcome):
29
- error: Final[Optional[str]]
30
- cause: Final[Optional[str]]
29
+ error: Final[str | None]
30
+ cause: Final[str | None]
31
31
 
32
- def __init__(self, callback_id: CallbackId, error: Optional[str], cause: Optional[str]):
32
+ def __init__(self, callback_id: CallbackId, error: str | None, cause: str | None):
33
33
  super().__init__(callback_id=callback_id)
34
34
  self.error = error
35
35
  self.cause = cause
@@ -85,20 +85,20 @@ class HeartbeatTimedOut(CallbackConsumerError):
85
85
 
86
86
 
87
87
  class ActivityTaskStartOutcome:
88
- worker_name: Optional[str]
88
+ worker_name: str | None
89
89
 
90
- def __init__(self, worker_name: Optional[str] = None):
90
+ def __init__(self, worker_name: str | None = None):
91
91
  self.worker_name = worker_name
92
92
 
93
93
 
94
94
  class ActivityTaskStartEndpoint:
95
95
  _next_activity_task_start_event: Final[Event]
96
- _outcome: Optional[ActivityTaskStartOutcome]
96
+ _outcome: ActivityTaskStartOutcome | None
97
97
 
98
98
  def __init__(self):
99
99
  self._next_activity_task_start_event = Event()
100
100
 
101
- def wait(self, timeout_seconds: float) -> Optional[ActivityTaskStartOutcome]:
101
+ def wait(self, timeout_seconds: float) -> ActivityTaskStartOutcome | None:
102
102
  self._next_activity_task_start_event.wait(timeout=timeout_seconds)
103
103
  return self._outcome
104
104
 
@@ -110,9 +110,9 @@ class ActivityTaskStartEndpoint:
110
110
  class CallbackEndpoint:
111
111
  callback_id: Final[CallbackId]
112
112
  _notify_event: Final[Event]
113
- _outcome: Optional[CallbackOutcome]
114
- consumer_error: Optional[CallbackConsumerError]
115
- _heartbeat_endpoint: Optional[HeartbeatEndpoint]
113
+ _outcome: CallbackOutcome | None
114
+ consumer_error: CallbackConsumerError | None
115
+ _heartbeat_endpoint: HeartbeatEndpoint | None
116
116
 
117
117
  def __init__(self, callback_id: CallbackId):
118
118
  self.callback_id = callback_id
@@ -144,11 +144,11 @@ class CallbackEndpoint:
144
144
  self._heartbeat_endpoint.notify()
145
145
  return True
146
146
 
147
- def wait(self, timeout: Optional[float] = None) -> Optional[CallbackOutcome]:
147
+ def wait(self, timeout: float | None = None) -> CallbackOutcome | None:
148
148
  self._notify_event.wait(timeout=timeout)
149
149
  return self._outcome
150
150
 
151
- def get_outcome(self) -> Optional[CallbackOutcome]:
151
+ def get_outcome(self) -> CallbackOutcome | None:
152
152
  return self._outcome
153
153
 
154
154
  def report(self, consumer_error: CallbackConsumerError) -> None:
@@ -170,7 +170,7 @@ class ActivityCallbackEndpoint(CallbackEndpoint):
170
170
  def get_activity_task_start_endpoint(self) -> ActivityTaskStartEndpoint:
171
171
  return self._activity_task_start_endpoint
172
172
 
173
- def notify_activity_task_start(self, worker_name: Optional[str]) -> None:
173
+ def notify_activity_task_start(self, worker_name: str | None) -> None:
174
174
  self._activity_task_start_endpoint.notify(ActivityTaskStartOutcome(worker_name=worker_name))
175
175
 
176
176
 
@@ -196,7 +196,7 @@ class CallbackPoolManager:
196
196
  self._activity_store = activity_store
197
197
  self._pool = OrderedDict()
198
198
 
199
- def get(self, callback_id: CallbackId) -> Optional[CallbackEndpoint]:
199
+ def get(self, callback_id: CallbackId) -> CallbackEndpoint | None:
200
200
  return self._pool.get(callback_id)
201
201
 
202
202
  def add(self, callback_id: CallbackId) -> CallbackEndpoint:
@@ -212,7 +212,7 @@ class CallbackPoolManager:
212
212
  if callback_id in self._pool:
213
213
  raise ValueError("Duplicate callback token id value.")
214
214
 
215
- maybe_activity: Optional[Activity] = self._activity_store.get(activity_arn)
215
+ maybe_activity: Activity | None = self._activity_store.get(activity_arn)
216
216
  if maybe_activity is None:
217
217
  raise ActivityDoesNotExist()
218
218
 
@@ -232,7 +232,7 @@ class CallbackPoolManager:
232
232
  if callback_endpoint is None:
233
233
  return False
234
234
 
235
- consumer_error: Optional[CallbackConsumerError] = callback_endpoint.consumer_error
235
+ consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
236
236
  if consumer_error is not None:
237
237
  raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
238
238
 
@@ -244,7 +244,7 @@ class CallbackPoolManager:
244
244
  if callback_endpoint is None:
245
245
  return False
246
246
 
247
- consumer_error: Optional[CallbackConsumerError] = callback_endpoint.consumer_error
247
+ consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
248
248
  if consumer_error is not None:
249
249
  raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
250
250
 
@@ -41,18 +41,18 @@ LOG = logging.getLogger(__name__)
41
41
 
42
42
  class Environment:
43
43
  _state_mutex: Final[threading.RLock()]
44
- _program_state: Optional[ProgramState]
44
+ _program_state: ProgramState | None
45
45
  program_state_event: Final[threading.Event()]
46
46
 
47
47
  event_manager: EventManager
48
48
  event_history_context: Final[EventHistoryContext]
49
- cloud_watch_logging_session: Final[Optional[CloudWatchLoggingSession]]
49
+ cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
50
50
  aws_execution_details: Final[AWSExecutionDetails]
51
51
  execution_type: Final[StateMachineType]
52
52
  callback_pool_manager: CallbackPoolManager
53
53
  map_run_record_pool_manager: MapRunRecordPoolManager
54
54
  activity_store: Final[dict[Arn, Activity]]
55
- mock_test_case: Optional[MockTestCase] = None
55
+ mock_test_case: MockTestCase | None = None
56
56
 
57
57
  _frames: Final[list[Environment]]
58
58
  _is_frame: bool = False
@@ -68,10 +68,10 @@ class Environment:
68
68
  execution_type: StateMachineType,
69
69
  context: ContextObjectData,
70
70
  event_history_context: EventHistoryContext,
71
- cloud_watch_logging_session: Optional[CloudWatchLoggingSession],
71
+ cloud_watch_logging_session: CloudWatchLoggingSession | None,
72
72
  activity_store: dict[Arn, Activity],
73
- variable_store: Optional[VariableStore] = None,
74
- mock_test_case: Optional[MockTestCase] = None,
73
+ variable_store: VariableStore | None = None,
74
+ mock_test_case: MockTestCase | None = None,
75
75
  ):
76
76
  super(Environment, self).__init__()
77
77
  self._state_mutex = threading.RLock()
@@ -101,7 +101,7 @@ class Environment:
101
101
 
102
102
  @classmethod
103
103
  def as_frame_of(
104
- cls, env: Environment, event_history_frame_cache: Optional[EventHistoryContext] = None
104
+ cls, env: Environment, event_history_frame_cache: EventHistoryContext | None = None
105
105
  ) -> Environment:
106
106
  return Environment.as_inner_frame_of(
107
107
  env=env,
@@ -114,7 +114,7 @@ class Environment:
114
114
  cls,
115
115
  env: Environment,
116
116
  variable_store: VariableStore,
117
- event_history_frame_cache: Optional[EventHistoryContext] = None,
117
+ event_history_frame_cache: EventHistoryContext | None = None,
118
118
  ) -> Environment:
119
119
  # Construct the frame's context object data.
120
120
  context = ContextObjectData(
@@ -153,8 +153,8 @@ class Environment:
153
153
  return frame
154
154
 
155
155
  @property
156
- def next_state_name(self) -> Optional[str]:
157
- next_state_name: Optional[str] = None
156
+ def next_state_name(self) -> str | None:
157
+ next_state_name: str | None = None
158
158
  program_state = self._program_state
159
159
  if isinstance(program_state, ProgramRunning):
160
160
  next_state_name = program_state.next_state_name
@@ -173,8 +173,8 @@ class Environment:
173
173
  )
174
174
 
175
175
  @property
176
- def next_field_name(self) -> Optional[str]:
177
- next_field_name: Optional[str] = None
176
+ def next_field_name(self) -> str | None:
177
+ next_field_name: str | None = None
178
178
  program_state = self._program_state
179
179
  if isinstance(program_state, ProgramRunning):
180
180
  next_field_name = program_state.next_field_name
@@ -220,7 +220,7 @@ class Environment:
220
220
  self.program_state_event.set()
221
221
  self.program_state_event.clear()
222
222
 
223
- def set_stop(self, stop_date: Timestamp, cause: Optional[str], error: Optional[str]) -> None:
223
+ def set_stop(self, stop_date: Timestamp, cause: str | None, error: str | None) -> None:
224
224
  with self._state_mutex:
225
225
  if isinstance(self._program_state, ProgramRunning):
226
226
  self._program_state = ProgramStopped(stop_date=stop_date, cause=cause, error=error)
@@ -229,16 +229,14 @@ class Environment:
229
229
  self.program_state_event.set()
230
230
  self.program_state_event.clear()
231
231
 
232
- def open_frame(
233
- self, event_history_context: Optional[EventHistoryContext] = None
234
- ) -> Environment:
232
+ def open_frame(self, event_history_context: EventHistoryContext | None = None) -> Environment:
235
233
  with self._state_mutex:
236
234
  frame = self.as_frame_of(env=self, event_history_frame_cache=event_history_context)
237
235
  self._frames.append(frame)
238
236
  return frame
239
237
 
240
238
  def open_inner_frame(
241
- self, event_history_context: Optional[EventHistoryContext] = None
239
+ self, event_history_context: EventHistoryContext | None = None
242
240
  ) -> Environment:
243
241
  with self._state_mutex:
244
242
  variable_store = VariableStore.as_inner_scope_of(
@@ -1,4 +1,4 @@
1
- from typing import Any, Final, Optional
1
+ from typing import Any, Final
2
2
 
3
3
  from localstack.aws.api.stepfunctions import Arn, Definition, LongArn, StateMachineType
4
4
 
@@ -18,12 +18,10 @@ class ExecutionDetails:
18
18
  arn: Final[LongArn]
19
19
  name: Final[str]
20
20
  role_arn: Final[Arn]
21
- inpt: Final[Optional[Any]]
21
+ inpt: Final[Any | None]
22
22
  start_time: Final[str]
23
23
 
24
- def __init__(
25
- self, arn: LongArn, name: str, role_arn: Arn, inpt: Optional[Any], start_time: str
26
- ):
24
+ def __init__(self, arn: LongArn, name: str, role_arn: Arn, inpt: Any | None, start_time: str):
27
25
  self.arn = arn
28
26
  self.name = name
29
27
  self.role_arn = role_arn
@@ -4,7 +4,7 @@ import copy
4
4
  import datetime
5
5
  import logging
6
6
  import threading
7
- from typing import Final, Optional
7
+ from typing import Final
8
8
 
9
9
  from localstack.aws.api.stepfunctions import (
10
10
  HistoryEvent,
@@ -61,9 +61,9 @@ class EventManager:
61
61
  _mutex: Final[threading.Lock]
62
62
  _event_id_gen: EventIdGenerator
63
63
  _history_event_list: Final[HistoryEventList]
64
- _cloud_watch_logging_session: Final[Optional[CloudWatchLoggingSession]]
64
+ _cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
65
65
 
66
- def __init__(self, cloud_watch_logging_session: Optional[CloudWatchLoggingSession] = None):
66
+ def __init__(self, cloud_watch_logging_session: CloudWatchLoggingSession | None = None):
67
67
  self._mutex = threading.Lock()
68
68
  self._event_id_gen = EventIdGenerator()
69
69
  self._history_event_list = list()
@@ -73,7 +73,7 @@ class EventManager:
73
73
  self,
74
74
  context: EventHistoryContext,
75
75
  event_type: HistoryEventType,
76
- event_details: Optional[EventDetails] = None,
76
+ event_details: EventDetails | None = None,
77
77
  timestamp: Timestamp = None,
78
78
  update_source_event_id: bool = True,
79
79
  ) -> int:
@@ -105,7 +105,7 @@ class EventManager:
105
105
 
106
106
  @staticmethod
107
107
  def _get_current_timestamp() -> datetime.datetime:
108
- return datetime.datetime.now(tz=datetime.timezone.utc)
108
+ return datetime.datetime.now(tz=datetime.UTC)
109
109
 
110
110
  @staticmethod
111
111
  def _create_history_event(
@@ -113,7 +113,7 @@ class EventManager:
113
113
  source_event_id: int,
114
114
  event_type: HistoryEventType,
115
115
  timestamp: datetime.datetime,
116
- event_details: Optional[EventDetails],
116
+ event_details: EventDetails | None,
117
117
  ) -> HistoryEvent:
118
118
  history_event = HistoryEvent()
119
119
  if event_details is not None:
@@ -130,7 +130,7 @@ class EventManager:
130
130
  source_event_id: int,
131
131
  event_type: HistoryEventType,
132
132
  timestamp: datetime.datetime,
133
- event_details: Optional[EventDetails],
133
+ event_details: EventDetails | None,
134
134
  ):
135
135
  history_event = self._create_history_event(
136
136
  event_id=event_id,
@@ -154,7 +154,7 @@ class EventManager:
154
154
  event_type: HistoryEventType,
155
155
  timestamp: datetime.datetime,
156
156
  execution_arn: LongArn,
157
- event_details: Optional[EventDetails],
157
+ event_details: EventDetails | None,
158
158
  include_execution_data: bool,
159
159
  ) -> HistoryLog:
160
160
  log = HistoryLog(
@@ -184,7 +184,7 @@ class EventManager:
184
184
  source_event_id: int,
185
185
  event_type: HistoryEventType,
186
186
  timestamp: datetime.datetime,
187
- event_details: Optional[EventDetails],
187
+ event_details: EventDetails | None,
188
188
  ):
189
189
  # No logging session for this execution.
190
190
  if self._cloud_watch_logging_session is None:
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import logging
4
4
  from datetime import datetime
5
- from typing import Final, NotRequired, Optional, TypedDict
5
+ from typing import Final, NotRequired, TypedDict
6
6
 
7
7
  from botocore.client import BaseClient
8
8
  from botocore.exceptions import ClientError
@@ -111,7 +111,7 @@ class CloudWatchLoggingConfiguration:
111
111
  @staticmethod
112
112
  def extract_log_arn_parts_from(
113
113
  logging_configuration: LoggingConfiguration,
114
- ) -> Optional[tuple[str, str, str]]:
114
+ ) -> tuple[str, str, str] | None:
115
115
  # Returns a tuple with: account_id, region, and log group name if the logging configuration
116
116
  # specifies a valid cloud watch log group arn, none otherwise.
117
117
 
@@ -155,7 +155,7 @@ class CloudWatchLoggingConfiguration:
155
155
  def from_logging_configuration(
156
156
  state_machine_arn: LongArn,
157
157
  logging_configuration: LoggingConfiguration,
158
- ) -> Optional[CloudWatchLoggingConfiguration]:
158
+ ) -> CloudWatchLoggingConfiguration | None:
159
159
  log_level = logging_configuration.get("level", LogLevel.OFF)
160
160
  if log_level == LogLevel.OFF:
161
161
  return None
@@ -1,5 +1,5 @@
1
1
  import abc
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, Timestamp
5
5
 
@@ -12,16 +12,16 @@ class ProgramEnded(ProgramState):
12
12
 
13
13
 
14
14
  class ProgramStopped(ProgramState):
15
- def __init__(self, stop_date: Timestamp, error: Optional[str], cause: Optional[str]):
15
+ def __init__(self, stop_date: Timestamp, error: str | None, cause: str | None):
16
16
  super().__init__()
17
17
  self.stop_date: Timestamp = stop_date
18
- self.error: Optional[str] = error
19
- self.cause: Optional[str] = cause
18
+ self.error: str | None = error
19
+ self.cause: str | None = cause
20
20
 
21
21
 
22
22
  class ProgramRunning(ProgramState):
23
- _next_state_name: Optional[str]
24
- _next_field_name: Optional[str]
23
+ _next_state_name: str | None
24
+ _next_field_name: str | None
25
25
 
26
26
  def __init__(self):
27
27
  super().__init__()
@@ -53,9 +53,9 @@ class ProgramRunning(ProgramState):
53
53
 
54
54
 
55
55
  class ProgramError(ProgramState):
56
- error: Final[Optional[ExecutionFailedEventDetails]]
56
+ error: Final[ExecutionFailedEventDetails | None]
57
57
 
58
- def __init__(self, error: Optional[ExecutionFailedEventDetails]):
58
+ def __init__(self, error: ExecutionFailedEventDetails | None):
59
59
  super().__init__()
60
60
  self.error = error
61
61
 
@@ -1,5 +1,5 @@
1
1
  import copy
2
- from typing import Any, Final, NotRequired, Optional, TypedDict
2
+ from typing import Any, Final, NotRequired, TypedDict
3
3
 
4
4
  from localstack.services.stepfunctions.asl.jsonata.jsonata import (
5
5
  VariableDeclarations,
@@ -18,7 +18,7 @@ _STATES_ERROR_OUTPUT_PREFIX: Final[str] = "$states.errorOutput"
18
18
 
19
19
  class ExecutionData(TypedDict):
20
20
  Id: str
21
- Input: Optional[Any]
21
+ Input: Any | None
22
22
  Name: str
23
23
  RoleArn: str
24
24
  StartTime: str # Format: ISO 8601.
@@ -43,7 +43,7 @@ class ItemData(TypedDict):
43
43
  # Contains the index number for the array item that is being currently processed.
44
44
  Index: int
45
45
  # Contains the array item being processed.
46
- Value: Optional[Any]
46
+ Value: Any | None
47
47
 
48
48
 
49
49
  class MapData(TypedDict):
@@ -73,8 +73,8 @@ class ContextObject:
73
73
  class StatesData(TypedDict):
74
74
  input: Any
75
75
  context: ContextObjectData
76
- result: NotRequired[Optional[Any]]
77
- errorOutput: NotRequired[Optional[Any]]
76
+ result: NotRequired[Any | None]
77
+ errorOutput: NotRequired[Any | None]
78
78
 
79
79
 
80
80
  class States:
@@ -87,7 +87,7 @@ class States:
87
87
  self.context_object = ContextObject(context_object=context)
88
88
 
89
89
  @staticmethod
90
- def _extract(query: Optional[str], data: Any) -> Any:
90
+ def _extract(query: str | None, data: Any) -> Any:
91
91
  if query is None:
92
92
  result = data
93
93
  else:
@@ -100,7 +100,7 @@ class States:
100
100
  jsonpath_states_query = "$." + query[1:]
101
101
  return self._extract(jsonpath_states_query, self._states_data)
102
102
 
103
- def get_input(self, query: Optional[str] = None) -> Any:
103
+ def get_input(self, query: str | None = None) -> Any:
104
104
  return self._extract(query, self._states_data["input"])
105
105
 
106
106
  def reset(self, input_value: Any) -> None:
@@ -109,10 +109,10 @@ class States:
109
109
  self._states_data["result"] = None
110
110
  self._states_data["errorOutput"] = None
111
111
 
112
- def get_context(self, query: Optional[str] = None) -> Any:
112
+ def get_context(self, query: str | None = None) -> Any:
113
113
  return self._extract(query, self._states_data["context"])
114
114
 
115
- def get_result(self, query: Optional[str] = None) -> Any:
115
+ def get_result(self, query: str | None = None) -> Any:
116
116
  if "result" not in self._states_data:
117
117
  raise RuntimeError("Illegal access to $states.result")
118
118
  return self._extract(query, self._states_data["result"])
@@ -121,7 +121,7 @@ class States:
121
121
  clone_result = copy.deepcopy(result)
122
122
  self._states_data["result"] = clone_result
123
123
 
124
- def get_error_output(self, query: Optional[str] = None) -> Any:
124
+ def get_error_output(self, query: str | None = None) -> Any:
125
125
  if "errorOutput" not in self._states_data:
126
126
  raise RuntimeError("Illegal access to $states.errorOutput")
127
127
  return self._extract(query, self._states_data["errorOutput"])
@@ -131,7 +131,7 @@ class States:
131
131
  self._states_data["errorOutput"] = clone_error_output
132
132
 
133
133
  def to_variable_declarations(
134
- self, variable_references: Optional[set[VariableReference]] = None
134
+ self, variable_references: set[VariableReference] | None = None
135
135
  ) -> VariableDeclarations:
136
136
  if not variable_references or _STATES_PREFIX in variable_references:
137
137
  return encode_jsonata_variable_declarations(
@@ -1,7 +1,5 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional
4
-
5
3
  from localstack.aws.api.stepfunctions import Arn, InspectionData, StateMachineType
6
4
  from localstack.services.stepfunctions.asl.eval.environment import Environment
7
5
  from localstack.services.stepfunctions.asl.eval.evaluation_details import AWSExecutionDetails
@@ -32,7 +30,7 @@ class TestStateEnvironment(Environment):
32
30
  context: ContextObjectData,
33
31
  event_history_context: EventHistoryContext,
34
32
  activity_store: dict[Arn, Activity],
35
- cloud_watch_logging_session: Optional[CloudWatchLoggingSession] = None,
33
+ cloud_watch_logging_session: CloudWatchLoggingSession | None = None,
36
34
  ):
37
35
  super().__init__(
38
36
  aws_execution_details=aws_execution_details,
@@ -47,7 +45,7 @@ class TestStateEnvironment(Environment):
47
45
  def as_frame_of(
48
46
  cls,
49
47
  env: TestStateEnvironment,
50
- event_history_frame_cache: Optional[EventHistoryContext] = None,
48
+ event_history_frame_cache: EventHistoryContext | None = None,
51
49
  ) -> Environment:
52
50
  frame = super().as_frame_of(env=env, event_history_frame_cache=event_history_frame_cache)
53
51
  frame.inspection_data = env.inspection_data
@@ -57,7 +55,7 @@ class TestStateEnvironment(Environment):
57
55
  cls,
58
56
  env: TestStateEnvironment,
59
57
  variable_store: VariableStore,
60
- event_history_frame_cache: Optional[EventHistoryContext] = None,
58
+ event_history_frame_cache: EventHistoryContext | None = None,
61
59
  ) -> Environment:
62
60
  frame = super().as_inner_frame_of(
63
61
  env=env,
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Any, Final, Optional
3
+ from typing import Any, Final
4
4
 
5
5
  from localstack.services.stepfunctions.asl.jsonata.jsonata import (
6
6
  VariableDeclarations,
@@ -51,8 +51,8 @@ class VariableStore:
51
51
 
52
52
  _declaration_tracing: Final[set[str]]
53
53
 
54
- _outer_variable_declaration_cache: Optional[VariableDeclarations]
55
- _variable_declarations_cache: Optional[VariableDeclarations]
54
+ _outer_variable_declaration_cache: VariableDeclarations | None
55
+ _variable_declarations_cache: VariableDeclarations | None
56
56
 
57
57
  def __init__(self):
58
58
  self._outer_scope = dict()