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
@@ -2,8 +2,9 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  import re
5
+ from collections.abc import Callable
5
6
  from pathlib import Path
6
- from typing import Any, Callable, Final, Optional
7
+ from typing import Any, Final
7
8
 
8
9
  import jpype
9
10
  import jpype.imports
@@ -45,9 +46,9 @@ _EXPRESSION_CLOSE_SYMBOL: Final[str] = ")"
45
46
 
46
47
  class JSONataException(Exception):
47
48
  error: Final[str]
48
- details: Optional[str]
49
+ details: str | None
49
50
 
50
- def __init__(self, error: str, details: Optional[str]):
51
+ def __init__(self, error: str, details: str | None):
51
52
  self.error = error
52
53
  self.details = details
53
54
 
@@ -105,7 +106,7 @@ class _JSONataJVMBridge:
105
106
 
106
107
  # Lazy initialization of the `eval_jsonata` function pointer.
107
108
  # This ensures the JVM is only started when JSONata functionality is needed.
108
- _eval_jsonata: Optional[Callable[[JSONataExpression], Any]] = None
109
+ _eval_jsonata: Callable[[JSONataExpression], Any] | None = None
109
110
 
110
111
 
111
112
  def eval_jsonata_expression(jsonata_expression: JSONataExpression) -> Any:
@@ -1,5 +1,4 @@
1
1
  import re
2
- from typing import Optional
3
2
 
4
3
  from antlr4.tree.Tree import ParseTree, TerminalNodeImpl
5
4
 
@@ -88,7 +87,7 @@ class Preprocessor(ASLIntrinsicParserVisitor):
88
87
  def visitFunc_arg_list(self, ctx: ASLIntrinsicParser.Func_arg_listContext) -> ArgumentList:
89
88
  arguments: list[Argument] = list()
90
89
  for child in ctx.children:
91
- cmp: Optional[Component] = self.visit(child)
90
+ cmp: Component | None = self.visit(child)
92
91
  if isinstance(cmp, Argument):
93
92
  arguments.append(cmp)
94
93
  return ArgumentList(arguments=arguments)
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import Any, Optional
3
+ from typing import Any
4
4
 
5
5
  from antlr4 import ParserRuleContext
6
6
  from antlr4.tree.Tree import ParseTree, TerminalNodeImpl
@@ -376,7 +376,7 @@ class Preprocessor(ASLParserVisitor):
376
376
  )
377
377
 
378
378
  @staticmethod
379
- def _inner_string_of(parser_rule_context: ParserRuleContext) -> Optional[str]:
379
+ def _inner_string_of(parser_rule_context: ParserRuleContext) -> str | None:
380
380
  if is_terminal(parser_rule_context, ASLLexer.NULL):
381
381
  return None
382
382
  inner_str = parser_rule_context.getText()
@@ -408,7 +408,7 @@ class Preprocessor(ASLParserVisitor):
408
408
  def visitStates_decl(self, ctx: ASLParser.States_declContext) -> States:
409
409
  states = States()
410
410
  for child in ctx.children:
411
- cmp: Optional[Component] = self.visit(child)
411
+ cmp: Component | None = self.visit(child)
412
412
  if isinstance(cmp, CommonStateField):
413
413
  # TODO move check to setter or checker layer?
414
414
  if cmp.name in states.states:
@@ -429,7 +429,7 @@ class Preprocessor(ASLParserVisitor):
429
429
 
430
430
  def visitEnd_decl(self, ctx: ASLParser.End_declContext) -> End:
431
431
  bool_child: ParseTree = ctx.children[-1]
432
- bool_term: Optional[TerminalNodeImpl] = is_terminal(bool_child)
432
+ bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
433
433
  if bool_term is None:
434
434
  raise ValueError(f"Could not derive End from declaration context '{ctx.getText()}'")
435
435
  bool_term_rule: int = bool_term.getSymbol().type
@@ -448,7 +448,7 @@ class Preprocessor(ASLParserVisitor):
448
448
  return ResultPath(result_path_src=inner_str)
449
449
 
450
450
  def visitInput_path_decl(self, ctx: ASLParser.Input_path_declContext) -> InputPath:
451
- string_sampler: Optional[StringSampler] = None
451
+ string_sampler: StringSampler | None = None
452
452
  if not is_terminal(pt=ctx.children[-1], token_type=ASLLexer.NULL):
453
453
  string_sampler: StringSampler = self.visitString_sampler(ctx.string_sampler())
454
454
  return InputPath(string_sampler=string_sampler)
@@ -457,7 +457,7 @@ class Preprocessor(ASLParserVisitor):
457
457
  self._raise_if_query_language_is_not(
458
458
  query_language_mode=QueryLanguageMode.JSONPath, ctx=ctx
459
459
  )
460
- string_sampler: Optional[StringSampler] = None
460
+ string_sampler: StringSampler | None = None
461
461
  if is_production(ctx.children[-1], ASLParser.RULE_string_sampler):
462
462
  string_sampler: StringSampler = self.visitString_sampler(ctx.children[-1])
463
463
  return OutputPath(string_sampler=string_sampler)
@@ -527,7 +527,7 @@ class Preprocessor(ASLParserVisitor):
527
527
  def visitBranches_decl(self, ctx: ASLParser.Branches_declContext) -> BranchesDecl:
528
528
  programs: list[Program] = []
529
529
  for child in ctx.children:
530
- cmp: Optional[Component] = self.visit(child)
530
+ cmp: Component | None = self.visit(child)
531
531
  if isinstance(cmp, Program):
532
532
  programs.append(cmp)
533
533
  return BranchesDecl(programs=programs)
@@ -536,7 +536,7 @@ class Preprocessor(ASLParserVisitor):
536
536
  self._open_query_language_scope(ctx)
537
537
  state_props = StateProps()
538
538
  for child in ctx.children:
539
- cmp: Optional[Component] = self.visit(child)
539
+ cmp: Component | None = self.visit(child)
540
540
  state_props.add(cmp)
541
541
  if state_props.get(QueryLanguage) is None:
542
542
  state_props.add(self._get_current_query_language())
@@ -583,7 +583,7 @@ class Preprocessor(ASLParserVisitor):
583
583
  def visitCondition_lit(self, ctx: ASLParser.Condition_litContext) -> ConditionJSONataLit:
584
584
  self._raise_if_query_language_is_not(query_language_mode=QueryLanguageMode.JSONata, ctx=ctx)
585
585
  bool_child: ParseTree = ctx.children[-1]
586
- bool_term: Optional[TerminalNodeImpl] = is_terminal(bool_child)
586
+ bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
587
587
  if bool_term is None:
588
588
  raise ValueError(
589
589
  f"Could not derive boolean literal from declaration context '{ctx.getText()}'."
@@ -651,7 +651,7 @@ class Preprocessor(ASLParserVisitor):
651
651
  self._raise_if_query_language_is_not(
652
652
  query_language_mode=QueryLanguageMode.JSONPath, ctx=ctx
653
653
  )
654
- pt: Optional[TerminalNodeImpl] = is_terminal(ctx.children[0])
654
+ pt: TerminalNodeImpl | None = is_terminal(ctx.children[0])
655
655
  if not pt:
656
656
  raise ValueError(f"Could not derive ChoiceOperator in block '{ctx.getText()}'.")
657
657
  return ComparisonComposite.ChoiceOp(pt.symbol.type)
@@ -662,7 +662,7 @@ class Preprocessor(ASLParserVisitor):
662
662
  choice_op: ComparisonComposite.ChoiceOp = self.visit(ctx.choice_operator())
663
663
  rules: list[ChoiceRule] = list()
664
664
  for child in ctx.children[1:]:
665
- cmp: Optional[Component] = self.visit(child)
665
+ cmp: Component | None = self.visit(child)
666
666
  if not cmp:
667
667
  continue
668
668
  elif isinstance(cmp, ChoiceRule):
@@ -685,7 +685,7 @@ class Preprocessor(ASLParserVisitor):
685
685
  ) -> ChoiceRule:
686
686
  composite_stmts = ComparisonCompositeProps()
687
687
  for child in ctx.children:
688
- cmp: Optional[Component] = self.visit(child)
688
+ cmp: Component | None = self.visit(child)
689
689
  composite_stmts.add(cmp)
690
690
  return ChoiceRule(
691
691
  comparison=composite_stmts.get(
@@ -705,7 +705,7 @@ class Preprocessor(ASLParserVisitor):
705
705
  ) -> ChoiceRule:
706
706
  comparison_stmts = StateProps()
707
707
  for child in ctx.children:
708
- cmp: Optional[Component] = self.visit(child)
708
+ cmp: Component | None = self.visit(child)
709
709
  comparison_stmts.add(cmp)
710
710
  if self._is_query_language(query_language_mode=QueryLanguageMode.JSONPath):
711
711
  variable: Variable = comparison_stmts.get(
@@ -748,7 +748,7 @@ class Preprocessor(ASLParserVisitor):
748
748
  def visitChoices_decl(self, ctx: ASLParser.Choices_declContext) -> ChoicesDecl:
749
749
  rules: list[ChoiceRule] = list()
750
750
  for child in ctx.children:
751
- cmp: Optional[Component] = self.visit(child)
751
+ cmp: Component | None = self.visit(child)
752
752
  if not cmp:
753
753
  continue
754
754
  elif isinstance(cmp, ChoiceRule):
@@ -1076,7 +1076,7 @@ class Preprocessor(ASLParserVisitor):
1076
1076
  def visitRetry_decl(self, ctx: ASLParser.Retry_declContext) -> RetryDecl:
1077
1077
  retriers: list[RetrierDecl] = list()
1078
1078
  for child in ctx.children:
1079
- cmp: Optional[Component] = self.visit(child)
1079
+ cmp: Component | None = self.visit(child)
1080
1080
  if isinstance(cmp, RetrierDecl):
1081
1081
  retriers.append(cmp)
1082
1082
  return RetryDecl(retriers=retriers)
@@ -1084,7 +1084,7 @@ class Preprocessor(ASLParserVisitor):
1084
1084
  def visitRetrier_decl(self, ctx: ASLParser.Retrier_declContext) -> RetrierDecl:
1085
1085
  props = RetrierProps()
1086
1086
  for child in ctx.children:
1087
- cmp: Optional[Component] = self.visit(child)
1087
+ cmp: Component | None = self.visit(child)
1088
1088
  props.add(cmp)
1089
1089
  return RetrierDecl.from_retrier_props(props=props)
1090
1090
 
@@ -1103,7 +1103,7 @@ class Preprocessor(ASLParserVisitor):
1103
1103
  pt = ctx.children[0]
1104
1104
 
1105
1105
  # Case: StatesErrorName.
1106
- prc: Optional[ParserRuleContext] = is_production(
1106
+ prc: ParserRuleContext | None = is_production(
1107
1107
  pt=pt, rule_index=ASLParser.RULE_states_error_name
1108
1108
  )
1109
1109
  if prc:
@@ -1114,7 +1114,7 @@ class Preprocessor(ASLParserVisitor):
1114
1114
  return CustomErrorName(error_name=error_name)
1115
1115
 
1116
1116
  def visitStates_error_name(self, ctx: ASLParser.States_error_nameContext) -> StatesErrorName:
1117
- pt: Optional[TerminalNodeImpl] = is_terminal(ctx.children[0])
1117
+ pt: TerminalNodeImpl | None = is_terminal(ctx.children[0])
1118
1118
  if not pt:
1119
1119
  raise ValueError(f"Could not derive ErrorName in block '{ctx.getText()}'.")
1120
1120
  states_error_name_type = StatesErrorNameType(pt.symbol.type)
@@ -1140,7 +1140,7 @@ class Preprocessor(ASLParserVisitor):
1140
1140
  self, ctx: ASLParser.Jitter_strategy_declContext
1141
1141
  ) -> JitterStrategyDecl:
1142
1142
  last_child: ParseTree = ctx.children[-1]
1143
- strategy_child: Optional[TerminalNodeImpl] = is_terminal(last_child)
1143
+ strategy_child: TerminalNodeImpl | None = is_terminal(last_child)
1144
1144
  strategy_value = strategy_child.getSymbol().type
1145
1145
  jitter_strategy = JitterStrategy(strategy_value)
1146
1146
  return JitterStrategyDecl(jitter_strategy=jitter_strategy)
@@ -1148,7 +1148,7 @@ class Preprocessor(ASLParserVisitor):
1148
1148
  def visitCatch_decl(self, ctx: ASLParser.Catch_declContext) -> CatchDecl:
1149
1149
  catchers: list[CatcherDecl] = list()
1150
1150
  for child in ctx.children:
1151
- cmp: Optional[Component] = self.visit(child)
1151
+ cmp: Component | None = self.visit(child)
1152
1152
  if isinstance(cmp, CatcherDecl):
1153
1153
  catchers.append(cmp)
1154
1154
  return CatchDecl(catchers=catchers)
@@ -1156,7 +1156,7 @@ class Preprocessor(ASLParserVisitor):
1156
1156
  def visitCatcher_decl(self, ctx: ASLParser.Catcher_declContext) -> CatcherDecl:
1157
1157
  props = CatcherProps()
1158
1158
  for child in ctx.children:
1159
- cmp: Optional[Component] = self.visit(child)
1159
+ cmp: Component | None = self.visit(child)
1160
1160
  props.add(cmp)
1161
1161
  if self._is_query_language(QueryLanguageMode.JSONPath) and not props.get(ResultPath):
1162
1162
  props.add(CatcherDecl.DEFAULT_RESULT_PATH)
@@ -1172,7 +1172,7 @@ class Preprocessor(ASLParserVisitor):
1172
1172
 
1173
1173
  def visitPayload_value_bool(self, ctx: ASLParser.Payload_value_boolContext) -> PayloadValueBool:
1174
1174
  bool_child: ParseTree = ctx.children[0]
1175
- bool_term: Optional[TerminalNodeImpl] = is_terminal(bool_child)
1175
+ bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
1176
1176
  if bool_term is None:
1177
1177
  raise ValueError(
1178
1178
  f"Could not derive PayloadValueBool from declaration context '{ctx.getText()}'."
@@ -1210,7 +1210,7 @@ class Preprocessor(ASLParserVisitor):
1210
1210
  def visitPayload_arr_decl(self, ctx: ASLParser.Payload_arr_declContext) -> PayloadArr:
1211
1211
  payload_values: list[PayloadValue] = list()
1212
1212
  for child in ctx.children:
1213
- cmp: Optional[Component] = self.visit(child)
1213
+ cmp: Component | None = self.visit(child)
1214
1214
  if isinstance(cmp, PayloadValue):
1215
1215
  payload_values.append(cmp)
1216
1216
  return PayloadArr(payload_values=payload_values)
@@ -1218,7 +1218,7 @@ class Preprocessor(ASLParserVisitor):
1218
1218
  def visitPayload_tmpl_decl(self, ctx: ASLParser.Payload_tmpl_declContext) -> PayloadTmpl:
1219
1219
  payload_bindings: list[PayloadBinding] = list()
1220
1220
  for child in ctx.children:
1221
- cmp: Optional[Component] = self.visit(child)
1221
+ cmp: Component | None = self.visit(child)
1222
1222
  if isinstance(cmp, PayloadBinding):
1223
1223
  payload_bindings.append(cmp)
1224
1224
  return PayloadTmpl(payload_bindings=payload_bindings)
@@ -1231,7 +1231,7 @@ class Preprocessor(ASLParserVisitor):
1231
1231
  self._open_query_language_scope(ctx)
1232
1232
  props = TypedProps()
1233
1233
  for child in ctx.children:
1234
- cmp: Optional[Component] = self.visit(child)
1234
+ cmp: Component | None = self.visit(child)
1235
1235
  props.add(cmp)
1236
1236
  if props.get(QueryLanguage) is None:
1237
1237
  props.add(self._get_current_query_language())
@@ -1314,7 +1314,7 @@ class Preprocessor(ASLParserVisitor):
1314
1314
  ) -> AssignTemplateValueArray:
1315
1315
  values: list[AssignTemplateValue] = list()
1316
1316
  for child in ctx.children:
1317
- cmp: Optional[Component] = self.visit(child)
1317
+ cmp: Component | None = self.visit(child)
1318
1318
  if isinstance(cmp, AssignTemplateValue):
1319
1319
  values.append(cmp)
1320
1320
  return AssignTemplateValueArray(values=values)
@@ -1324,7 +1324,7 @@ class Preprocessor(ASLParserVisitor):
1324
1324
  ) -> AssignTemplateValueObject:
1325
1325
  bindings: list[AssignTemplateBinding] = list()
1326
1326
  for child in ctx.children:
1327
- cmp: Optional[Component] = self.visit(child)
1327
+ cmp: Component | None = self.visit(child)
1328
1328
  if isinstance(cmp, AssignTemplateBinding):
1329
1329
  bindings.append(cmp)
1330
1330
  return AssignTemplateValueObject(bindings=bindings)
@@ -1361,7 +1361,7 @@ class Preprocessor(ASLParserVisitor):
1361
1361
  ) -> list[AssignDeclBinding]:
1362
1362
  bindings: list[AssignDeclBinding] = list()
1363
1363
  for child in ctx.children:
1364
- cmp: Optional[Component] = self.visit(child)
1364
+ cmp: Component | None = self.visit(child)
1365
1365
  if isinstance(cmp, AssignDeclBinding):
1366
1366
  bindings.append(cmp)
1367
1367
  return bindings
@@ -1416,7 +1416,7 @@ class Preprocessor(ASLParserVisitor):
1416
1416
  ) -> JSONataTemplateValueArray:
1417
1417
  values: list[JSONataTemplateValue] = list()
1418
1418
  for child in ctx.children:
1419
- cmp: Optional[Component] = self.visit(child)
1419
+ cmp: Component | None = self.visit(child)
1420
1420
  if isinstance(cmp, JSONataTemplateValue):
1421
1421
  values.append(cmp)
1422
1422
  return JSONataTemplateValueArray(values=values)
@@ -1426,7 +1426,7 @@ class Preprocessor(ASLParserVisitor):
1426
1426
  ) -> JSONataTemplateValueObject:
1427
1427
  bindings: list[JSONataTemplateBinding] = list()
1428
1428
  for child in ctx.children:
1429
- cmp: Optional[Component] = self.visit(child)
1429
+ cmp: Component | None = self.visit(child)
1430
1430
  if isinstance(cmp, JSONataTemplateBinding):
1431
1431
  bindings.append(cmp)
1432
1432
  return JSONataTemplateValueObject(bindings=bindings)
@@ -1,5 +1,5 @@
1
1
  from collections import OrderedDict
2
- from typing import Any, Optional
2
+ from typing import Any
3
3
 
4
4
 
5
5
  class TypedProps:
@@ -18,7 +18,7 @@ class TypedProps:
18
18
  )
19
19
  self._instance_by_type[typ] = instance
20
20
 
21
- def get(self, typ: type, raise_on_missing: Optional[Exception] = None) -> Optional[Any]:
21
+ def get(self, typ: type, raise_on_missing: Exception | None = None) -> Any | None:
22
22
  if raise_on_missing and typ not in self._instance_by_type:
23
23
  raise raise_on_missing
24
24
  return self._instance_by_type.get(typ)
@@ -1,7 +1,7 @@
1
1
  import datetime
2
2
  import json
3
3
  from json import JSONEncoder
4
- from typing import Any, Optional
4
+ from typing import Any
5
5
 
6
6
 
7
7
  class _DateTimeEncoder(JSONEncoder):
@@ -12,5 +12,5 @@ class _DateTimeEncoder(JSONEncoder):
12
12
  return str(obj)
13
13
 
14
14
 
15
- def to_json_str(obj: Any, separators: Optional[tuple[str, str]] = None) -> str:
15
+ def to_json_str(obj: Any, separators: tuple[str, str] | None = None) -> str:
16
16
  return json.dumps(obj, cls=_DateTimeEncoder, separators=separators)
@@ -1,5 +1,5 @@
1
1
  import re
2
- from typing import Any, Final, Optional
2
+ from typing import Any, Final
3
3
 
4
4
  from jsonpath_ng.ext import parse
5
5
  from jsonpath_ng.jsonpath import Index
@@ -24,7 +24,7 @@ def _contains_slice_or_wildcard_array(path: str) -> bool:
24
24
  class NoSuchJsonPathError(Exception):
25
25
  json_path: Final[str]
26
26
  data: Final[Any]
27
- _message: Optional[str]
27
+ _message: str | None
28
28
 
29
29
  def __init__(self, json_path: str, data: Any):
30
30
  self.json_path = json_path
@@ -1,6 +1,6 @@
1
1
  import datetime
2
2
  from collections import deque
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import (
6
6
  ActivityListItem,
@@ -26,16 +26,16 @@ class Activity:
26
26
  creation_date: Final[Timestamp]
27
27
  _tasks: Final[deque[ActivityTask]]
28
28
 
29
- def __init__(self, arn: Arn, name: Name, creation_date: Optional[Timestamp] = None):
29
+ def __init__(self, arn: Arn, name: Name, creation_date: Timestamp | None = None):
30
30
  self.arn = arn
31
31
  self.name = name
32
- self.creation_date = creation_date or datetime.datetime.now(tz=datetime.timezone.utc)
32
+ self.creation_date = creation_date or datetime.datetime.now(tz=datetime.UTC)
33
33
  self._tasks = deque()
34
34
 
35
35
  def add_task(self, task: ActivityTask):
36
36
  self._tasks.append(task)
37
37
 
38
- def get_task(self) -> Optional[ActivityTask]:
38
+ def get_task(self) -> ActivityTask | None:
39
39
  return self._tasks.popleft()
40
40
 
41
41
  def to_describe_activity_output(self) -> DescribeActivityOutput:
@@ -4,7 +4,7 @@ import copy
4
4
  import datetime
5
5
  import random
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
  AliasDescription,
@@ -20,9 +20,9 @@ from localstack.utils.strings import token_generator
20
20
 
21
21
  class Alias:
22
22
  _mutex: Final[threading.Lock]
23
- update_date: Optional[datetime.datetime]
23
+ update_date: datetime.datetime | None
24
24
  name: Final[CharacterRestrictedName]
25
- _description: Optional[AliasDescription]
25
+ _description: AliasDescription | None
26
26
  _routing_configuration_list: RoutingConfigurationList
27
27
  _state_machine_version_arns: list[Arn]
28
28
  _execution_probability_distribution: list[int]
@@ -34,7 +34,7 @@ class Alias:
34
34
  self,
35
35
  state_machine_arn: Arn,
36
36
  name: CharacterRestrictedName,
37
- description: Optional[AliasDescription],
37
+ description: AliasDescription | None,
38
38
  routing_configuration_list: RoutingConfigurationList,
39
39
  ):
40
40
  self._mutex = threading.Lock()
@@ -66,7 +66,7 @@ class Alias:
66
66
 
67
67
  @staticmethod
68
68
  def _get_mutex_date() -> datetime.datetime:
69
- return datetime.datetime.now(tz=datetime.timezone.utc)
69
+ return datetime.datetime.now(tz=datetime.UTC)
70
70
 
71
71
  def get_routing_configuration_list(self) -> RoutingConfigurationList:
72
72
  return copy.deepcopy(self._routing_configuration_list)
@@ -77,7 +77,7 @@ class Alias:
77
77
 
78
78
  def update(
79
79
  self,
80
- description: Optional[AliasDescription],
80
+ description: AliasDescription | None,
81
81
  routing_configuration_list: RoutingConfigurationList,
82
82
  ) -> None:
83
83
  with self._mutex:
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import datetime
4
4
  import json
5
5
  import logging
6
- from typing import Final, Optional
6
+ from typing import Final
7
7
 
8
8
  from localstack.aws.api.events import PutEventsRequestEntry
9
9
  from localstack.aws.api.stepfunctions import (
@@ -72,7 +72,7 @@ class BaseExecutionWorkerCommunication(ExecutionWorkerCommunication):
72
72
 
73
73
  def _reflect_execution_status(self):
74
74
  exit_program_state: ProgramState = self.execution.exec_worker.env.program_state()
75
- self.execution.stop_date = datetime.datetime.now(tz=datetime.timezone.utc)
75
+ self.execution.stop_date = datetime.datetime.now(tz=datetime.UTC)
76
76
  if isinstance(exit_program_state, ProgramEnded):
77
77
  self.execution.exec_status = ExecutionStatus.SUCCEEDED
78
78
  self.execution.output = self.execution.exec_worker.env.states.get_input()
@@ -105,27 +105,27 @@ class Execution:
105
105
 
106
106
  state_machine: Final[StateMachineInstance]
107
107
  state_machine_arn: Final[Arn]
108
- state_machine_version_arn: Final[Optional[Arn]]
109
- state_machine_alias_arn: Final[Optional[Arn]]
108
+ state_machine_version_arn: Final[Arn | None]
109
+ state_machine_alias_arn: Final[Arn | None]
110
110
 
111
- mock_test_case: Final[Optional[MockTestCase]]
111
+ mock_test_case: Final[MockTestCase | None]
112
112
 
113
113
  start_date: Final[Timestamp]
114
- input_data: Final[Optional[json]]
115
- input_details: Final[Optional[CloudWatchEventsExecutionDataDetails]]
116
- trace_header: Final[Optional[TraceHeader]]
117
- _cloud_watch_logging_session: Final[Optional[CloudWatchLoggingSession]]
114
+ input_data: Final[json | None]
115
+ input_details: Final[CloudWatchEventsExecutionDataDetails | None]
116
+ trace_header: Final[TraceHeader | None]
117
+ _cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
118
118
 
119
- exec_status: Optional[ExecutionStatus]
120
- stop_date: Optional[Timestamp]
119
+ exec_status: ExecutionStatus | None
120
+ stop_date: Timestamp | None
121
121
 
122
- output: Optional[json]
123
- output_details: Optional[CloudWatchEventsExecutionDataDetails]
122
+ output: json | None
123
+ output_details: CloudWatchEventsExecutionDataDetails | None
124
124
 
125
- error: Optional[SensitiveError]
126
- cause: Optional[SensitiveCause]
125
+ error: SensitiveError | None
126
+ cause: SensitiveCause | None
127
127
 
128
- exec_worker: Optional[ExecutionWorker]
128
+ exec_worker: ExecutionWorker | None
129
129
 
130
130
  _activity_store: dict[Arn, Activity]
131
131
 
@@ -139,12 +139,12 @@ class Execution:
139
139
  region_name: str,
140
140
  state_machine: StateMachineInstance,
141
141
  start_date: Timestamp,
142
- cloud_watch_logging_session: Optional[CloudWatchLoggingSession],
142
+ cloud_watch_logging_session: CloudWatchLoggingSession | None,
143
143
  activity_store: dict[Arn, Activity],
144
- input_data: Optional[json] = None,
145
- trace_header: Optional[TraceHeader] = None,
146
- state_machine_alias_arn: Optional[Arn] = None,
147
- mock_test_case: Optional[MockTestCase] = None,
144
+ input_data: json | None = None,
145
+ trace_header: TraceHeader | None = None,
146
+ state_machine_alias_arn: Arn | None = None,
147
+ mock_test_case: MockTestCase | None = None,
148
148
  ):
149
149
  self.name = name
150
150
  self.sm_type = sm_type
@@ -267,9 +267,7 @@ class Execution:
267
267
  @staticmethod
268
268
  def _to_serialized_date(timestamp: datetime.datetime) -> str:
269
269
  """See test in tests.aws.services.stepfunctions.v2.base.test_base.TestSnfBase.test_execution_dateformat"""
270
- return (
271
- f"{timestamp.astimezone(datetime.timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3]}Z"
272
- )
270
+ return f"{timestamp.astimezone(datetime.UTC).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3]}Z"
273
271
 
274
272
  def _get_start_execution_worker_comm(self) -> BaseExecutionWorkerCommunication:
275
273
  return BaseExecutionWorkerCommunication(self)
@@ -318,8 +316,8 @@ class Execution:
318
316
  self.publish_execution_status_change_event()
319
317
  self.exec_worker.start()
320
318
 
321
- def stop(self, stop_date: datetime.datetime, error: Optional[str], cause: Optional[str]):
322
- exec_worker: Optional[ExecutionWorker] = self.exec_worker
319
+ def stop(self, stop_date: datetime.datetime, error: str | None, cause: str | None):
320
+ exec_worker: ExecutionWorker | None = self.exec_worker
323
321
  if exec_worker:
324
322
  exec_worker.stop(stop_date=stop_date, cause=cause, error=error)
325
323
 
@@ -380,7 +378,7 @@ class SyncExecutionWorkerCommunication(BaseExecutionWorkerCommunication):
380
378
 
381
379
 
382
380
  class SyncExecution(Execution):
383
- sync_execution_status: Optional[SyncExecutionStatus] = None
381
+ sync_execution_status: SyncExecutionStatus | None = None
384
382
 
385
383
  def _get_start_execution_worker(self) -> SyncExecutionWorker:
386
384
  return SyncExecutionWorker(
@@ -1,6 +1,6 @@
1
1
  import datetime
2
2
  from threading import Thread
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import (
6
6
  Arn,
@@ -36,19 +36,19 @@ from localstack.utils.common import TMP_THREADS
36
36
  class ExecutionWorker:
37
37
  _evaluation_details: Final[EvaluationDetails]
38
38
  _execution_communication: Final[ExecutionWorkerCommunication]
39
- _cloud_watch_logging_session: Final[Optional[CloudWatchLoggingSession]]
40
- _mock_test_case: Final[Optional[MockTestCase]]
39
+ _cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
40
+ _mock_test_case: Final[MockTestCase | None]
41
41
  _activity_store: dict[Arn, Activity]
42
42
 
43
- env: Optional[Environment]
43
+ env: Environment | None
44
44
 
45
45
  def __init__(
46
46
  self,
47
47
  evaluation_details: EvaluationDetails,
48
48
  exec_comm: ExecutionWorkerCommunication,
49
- cloud_watch_logging_session: Optional[CloudWatchLoggingSession],
49
+ cloud_watch_logging_session: CloudWatchLoggingSession | None,
50
50
  activity_store: dict[Arn, Activity],
51
- mock_test_case: Optional[MockTestCase] = None,
51
+ mock_test_case: MockTestCase | None = None,
52
52
  ):
53
53
  self._evaluation_details = evaluation_details
54
54
  self._execution_communication = exec_comm
@@ -113,7 +113,7 @@ class ExecutionWorker:
113
113
  TMP_THREADS.append(execution_logic_thread)
114
114
  execution_logic_thread.start()
115
115
 
116
- def stop(self, stop_date: datetime.datetime, error: Optional[str], cause: Optional[str]):
116
+ def stop(self, stop_date: datetime.datetime, error: str | None, cause: str | None):
117
117
  self.env.set_stop(stop_date=stop_date, cause=cause, error=error)
118
118
 
119
119