localstack-core 4.6.1.dev60__py3-none-any.whl → 4.10.1.dev12__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 (672) hide show
  1. localstack/aws/api/apigateway/__init__.py +87 -110
  2. localstack/aws/api/cloudformation/__init__.py +18 -4
  3. localstack/aws/api/cloudwatch/__init__.py +41 -1
  4. localstack/aws/api/config/__init__.py +4 -0
  5. localstack/aws/api/core.py +8 -5
  6. localstack/aws/api/dynamodb/__init__.py +30 -0
  7. localstack/aws/api/ec2/__init__.py +1545 -66
  8. localstack/aws/api/events/__init__.py +12 -16
  9. localstack/aws/api/iam/__init__.py +7 -0
  10. localstack/aws/api/kinesis/__init__.py +19 -0
  11. localstack/aws/api/kms/__init__.py +6 -0
  12. localstack/aws/api/lambda_/__init__.py +36 -23
  13. localstack/aws/api/logs/__init__.py +20 -8
  14. localstack/aws/api/opensearch/__init__.py +16 -0
  15. localstack/aws/api/pipes/__init__.py +24 -32
  16. localstack/aws/api/redshift/__init__.py +9 -3
  17. localstack/aws/api/route53/__init__.py +5 -0
  18. localstack/aws/api/s3/__init__.py +12 -0
  19. localstack/aws/api/s3control/__init__.py +56 -0
  20. localstack/aws/api/scheduler/__init__.py +14 -16
  21. localstack/aws/api/ssm/__init__.py +2 -0
  22. localstack/aws/api/stepfunctions/__init__.py +88 -114
  23. localstack/aws/api/support/__init__.py +8 -9
  24. localstack/aws/api/transcribe/__init__.py +17 -0
  25. localstack/aws/chain.py +2 -2
  26. localstack/aws/client.py +14 -11
  27. localstack/aws/connect.py +42 -41
  28. localstack/aws/forwarder.py +57 -9
  29. localstack/aws/gateway.py +1 -3
  30. localstack/aws/handlers/analytics.py +2 -3
  31. localstack/aws/handlers/cors.py +4 -5
  32. localstack/aws/handlers/internal_requests.py +6 -1
  33. localstack/aws/handlers/logging.py +13 -4
  34. localstack/aws/handlers/metric_handler.py +44 -5
  35. localstack/aws/handlers/service.py +48 -28
  36. localstack/aws/mocking.py +18 -27
  37. localstack/aws/patches.py +2 -2
  38. localstack/aws/protocol/op_router.py +11 -10
  39. localstack/aws/protocol/parser.py +475 -49
  40. localstack/aws/protocol/serializer.py +723 -106
  41. localstack/aws/protocol/service_router.py +133 -33
  42. localstack/aws/protocol/validate.py +6 -6
  43. localstack/aws/scaffold.py +9 -10
  44. localstack/aws/serving/edge.py +5 -6
  45. localstack/aws/serving/hypercorn.py +2 -2
  46. localstack/aws/serving/twisted.py +1 -2
  47. localstack/aws/serving/werkzeug.py +2 -2
  48. localstack/aws/skeleton.py +12 -11
  49. localstack/aws/spec-patches.json +58 -0
  50. localstack/aws/spec.py +66 -46
  51. localstack/cli/exceptions.py +1 -1
  52. localstack/cli/localstack.py +11 -11
  53. localstack/cli/lpm.py +4 -5
  54. localstack/cli/plugins.py +1 -1
  55. localstack/cli/profiles.py +1 -2
  56. localstack/config.py +44 -30
  57. localstack/constants.py +4 -29
  58. localstack/deprecations.py +5 -5
  59. localstack/dev/kubernetes/__main__.py +130 -7
  60. localstack/dev/run/__main__.py +5 -5
  61. localstack/dev/run/configurators.py +1 -4
  62. localstack/dev/run/paths.py +6 -6
  63. localstack/dns/models.py +2 -1
  64. localstack/dns/plugins.py +5 -1
  65. localstack/dns/server.py +16 -6
  66. localstack/http/dispatcher.py +1 -2
  67. localstack/http/response.py +2 -2
  68. localstack/http/router.py +1 -1
  69. localstack/http/trace.py +2 -1
  70. localstack/logging/format.py +6 -6
  71. localstack/packages/api.py +13 -12
  72. localstack/packages/core.py +4 -4
  73. localstack/packages/debugpy.py +1 -3
  74. localstack/packages/ffmpeg.py +1 -2
  75. localstack/packages/java.py +38 -12
  76. localstack/packages/plugins.py +0 -8
  77. localstack/runtime/analytics.py +3 -0
  78. localstack/runtime/hooks.py +1 -1
  79. localstack/runtime/init.py +8 -9
  80. localstack/runtime/main.py +5 -5
  81. localstack/runtime/patches.py +2 -2
  82. localstack/runtime/shutdown.py +2 -1
  83. localstack/services/apigateway/exporter.py +1 -2
  84. localstack/services/apigateway/helpers.py +7 -10
  85. localstack/services/apigateway/legacy/context.py +21 -21
  86. localstack/services/apigateway/legacy/helpers.py +27 -28
  87. localstack/services/apigateway/legacy/integration.py +11 -10
  88. localstack/services/apigateway/legacy/invocations.py +6 -5
  89. localstack/services/apigateway/legacy/provider.py +148 -68
  90. localstack/services/apigateway/legacy/router_asf.py +2 -2
  91. localstack/services/apigateway/legacy/templates.py +6 -6
  92. localstack/services/apigateway/models.py +16 -16
  93. localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
  94. localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
  95. localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
  96. localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
  97. localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
  98. localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
  99. localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
  100. localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
  101. localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +9 -6
  102. localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
  103. localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
  104. localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
  105. localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
  106. localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
  107. localstack/services/apigateway/next_gen/provider.py +5 -0
  108. localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
  109. localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
  110. localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
  111. localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
  112. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
  113. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
  114. localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
  115. localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
  116. localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
  117. localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
  118. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
  119. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
  120. localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
  121. localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
  122. localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
  123. localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
  124. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
  125. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
  126. localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +6 -6
  127. localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
  128. localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
  129. localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
  130. localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
  131. localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
  132. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
  133. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
  134. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
  135. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
  136. localstack/services/cdk/resource_providers/cdk_metadata.py +4 -3
  137. localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
  138. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
  139. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
  140. localstack/services/cloudformation/api_utils.py +4 -8
  141. localstack/services/cloudformation/cfn_utils.py +2 -2
  142. localstack/services/cloudformation/deployment_utils.py +14 -12
  143. localstack/services/cloudformation/engine/changes.py +3 -3
  144. localstack/services/cloudformation/engine/entities.py +27 -17
  145. localstack/services/cloudformation/engine/parameters.py +4 -4
  146. localstack/services/cloudformation/engine/template_deployer.py +15 -14
  147. localstack/services/cloudformation/engine/template_utils.py +34 -12
  148. localstack/services/cloudformation/engine/transformers.py +11 -8
  149. localstack/services/cloudformation/engine/types.py +5 -4
  150. localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
  151. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
  152. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
  153. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
  154. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
  155. localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
  156. localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
  157. localstack/services/cloudformation/engine/v2/resolving.py +102 -0
  158. localstack/services/cloudformation/engine/yaml_parser.py +9 -2
  159. localstack/services/cloudformation/provider.py +11 -6
  160. localstack/services/cloudformation/provider_utils.py +34 -4
  161. localstack/services/cloudformation/resource_provider.py +31 -21
  162. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
  163. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
  164. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
  165. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
  166. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
  167. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
  168. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
  169. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
  170. localstack/services/cloudformation/resources.py +24149 -0
  171. localstack/services/cloudformation/scaffolding/__main__.py +13 -12
  172. localstack/services/cloudformation/scaffolding/propgen.py +2 -2
  173. localstack/services/cloudformation/service_models.py +2 -2
  174. localstack/services/cloudformation/stores.py +33 -22
  175. localstack/services/cloudformation/v2/entities.py +103 -88
  176. localstack/services/cloudformation/v2/provider.py +872 -131
  177. localstack/services/cloudformation/v2/types.py +38 -0
  178. localstack/services/cloudformation/v2/utils.py +4 -1
  179. localstack/services/cloudwatch/alarm_scheduler.py +11 -8
  180. localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
  181. localstack/services/cloudwatch/models.py +5 -7
  182. localstack/services/cloudwatch/provider.py +30 -25
  183. localstack/services/cloudwatch/provider_v2.py +27 -32
  184. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
  185. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
  186. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
  187. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
  188. localstack/services/dynamodb/packages.py +3 -3
  189. localstack/services/dynamodb/provider.py +159 -18
  190. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
  191. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
  192. localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
  193. localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
  194. localstack/services/dynamodb/server.py +2 -2
  195. localstack/services/dynamodb/utils.py +13 -14
  196. localstack/services/dynamodb/v2/provider.py +157 -18
  197. localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
  198. localstack/services/dynamodbstreams/models.py +1 -3
  199. localstack/services/ec2/patches.py +26 -5
  200. localstack/services/ec2/provider.py +3 -3
  201. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
  202. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
  203. localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
  204. localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
  205. localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
  206. localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
  207. localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
  208. localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
  209. localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
  210. localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
  211. localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
  212. localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
  213. localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
  214. localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
  215. localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
  216. localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
  217. localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
  218. localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
  219. localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
  220. localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
  221. localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
  222. localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
  223. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
  224. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
  225. localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
  226. localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
  227. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
  228. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
  229. localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
  230. localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
  231. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +29 -22
  232. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
  233. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
  234. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
  235. localstack/services/ecr/resource_providers/aws_ecr_repository.py +22 -19
  236. localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
  237. localstack/services/edge.py +6 -6
  238. localstack/services/es/provider.py +21 -21
  239. localstack/services/events/archive.py +2 -2
  240. localstack/services/events/connection.py +5 -5
  241. localstack/services/events/event_bus.py +9 -9
  242. localstack/services/events/event_rule_engine.py +31 -13
  243. localstack/services/events/models.py +29 -30
  244. localstack/services/events/provider.py +29 -26
  245. localstack/services/events/replay.py +3 -3
  246. localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
  247. localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
  248. localstack/services/events/resource_providers/aws_events_connection.py +27 -27
  249. localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
  250. localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
  251. localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
  252. localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
  253. localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
  254. localstack/services/events/resource_providers/aws_events_rule.py +82 -82
  255. localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
  256. localstack/services/events/rule.py +15 -15
  257. localstack/services/events/target.py +21 -13
  258. localstack/services/events/utils.py +7 -7
  259. localstack/services/events/v1/models.py +1 -3
  260. localstack/services/events/v1/provider.py +15 -15
  261. localstack/services/firehose/models.py +1 -3
  262. localstack/services/firehose/provider.py +25 -16
  263. localstack/services/iam/iam_patches.py +5 -6
  264. localstack/services/iam/provider.py +14 -119
  265. localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
  266. localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
  267. localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
  268. localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
  269. localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
  270. localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
  271. localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
  272. localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
  273. localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
  274. localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
  275. localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
  276. localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
  277. localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
  278. localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
  279. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
  280. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
  281. localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
  282. localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
  283. localstack/services/iam/resources/policy_simulator.py +133 -0
  284. localstack/services/kinesis/kinesis_mock_server.py +7 -8
  285. localstack/services/kinesis/models.py +17 -5
  286. localstack/services/kinesis/packages.py +3 -3
  287. localstack/services/kinesis/provider.py +86 -3
  288. localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
  289. localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
  290. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
  291. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
  292. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
  293. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
  294. localstack/services/kms/models.py +21 -18
  295. localstack/services/kms/provider.py +62 -26
  296. localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
  297. localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
  298. localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
  299. localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
  300. localstack/services/kms/utils.py +4 -3
  301. localstack/services/lambda_/api_utils.py +19 -16
  302. localstack/services/lambda_/custom_endpoints.py +2 -2
  303. localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
  304. localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
  305. localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
  306. localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
  307. localstack/services/lambda_/hooks.py +6 -1
  308. localstack/services/lambda_/invocation/assignment.py +1 -2
  309. localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
  310. localstack/services/lambda_/invocation/event_manager.py +1 -1
  311. localstack/services/lambda_/invocation/execution_environment.py +4 -4
  312. localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
  313. localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
  314. localstack/services/lambda_/invocation/lambda_models.py +33 -30
  315. localstack/services/lambda_/invocation/lambda_service.py +12 -5
  316. localstack/services/lambda_/invocation/logs.py +2 -3
  317. localstack/services/lambda_/invocation/runtime_executor.py +3 -3
  318. localstack/services/lambda_/invocation/version_manager.py +31 -8
  319. localstack/services/lambda_/ldm.py +14 -0
  320. localstack/services/lambda_/packages.py +3 -4
  321. localstack/services/lambda_/provider.py +9 -26
  322. localstack/services/lambda_/provider_utils.py +1 -1
  323. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
  324. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
  325. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
  326. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
  327. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
  328. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
  329. localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
  330. localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
  331. localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
  332. localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
  333. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
  334. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
  335. localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
  336. localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
  337. localstack/services/lambda_/resource_providers/aws_lambda_url.py +15 -15
  338. localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
  339. localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
  340. localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
  341. localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
  342. localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
  343. localstack/services/lambda_/runtimes.py +1 -3
  344. localstack/services/lambda_/urlrouter.py +14 -1
  345. localstack/services/logs/models.py +1 -3
  346. localstack/services/logs/provider.py +39 -22
  347. localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
  348. localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
  349. localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
  350. localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
  351. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
  352. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
  353. localstack/services/moto.py +5 -4
  354. localstack/services/opensearch/cluster.py +28 -20
  355. localstack/services/opensearch/cluster_manager.py +13 -14
  356. localstack/services/opensearch/models.py +1 -3
  357. localstack/services/opensearch/packages.py +27 -9
  358. localstack/services/opensearch/provider.py +15 -10
  359. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
  360. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
  361. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
  362. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
  363. localstack/services/opensearch/versions.py +57 -10
  364. localstack/services/plugins.py +37 -32
  365. localstack/services/providers.py +10 -2
  366. localstack/services/redshift/provider.py +0 -21
  367. localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
  368. localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
  369. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
  370. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
  371. localstack/services/route53/models.py +1 -3
  372. localstack/services/route53/provider.py +1 -2
  373. localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
  374. localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
  375. localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
  376. localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
  377. localstack/services/route53resolver/models.py +8 -10
  378. localstack/services/route53resolver/provider.py +12 -12
  379. localstack/services/s3/codec.py +2 -2
  380. localstack/services/s3/constants.py +5 -2
  381. localstack/services/s3/cors.py +8 -8
  382. localstack/services/s3/models.py +73 -73
  383. localstack/services/s3/notifications.py +74 -58
  384. localstack/services/s3/presigned_url.py +41 -59
  385. localstack/services/s3/provider.py +86 -29
  386. localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
  387. localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
  388. localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
  389. localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
  390. localstack/services/s3/storage/core.py +4 -3
  391. localstack/services/s3/storage/ephemeral.py +7 -6
  392. localstack/services/s3/utils.py +51 -31
  393. localstack/services/s3/validation.py +47 -33
  394. localstack/services/s3/website_hosting.py +9 -7
  395. localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
  396. localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
  397. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
  398. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
  399. localstack/services/secretsmanager/provider.py +10 -12
  400. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
  401. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
  402. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
  403. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
  404. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
  405. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
  406. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
  407. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
  408. localstack/services/ses/models.py +8 -1
  409. localstack/services/ses/provider.py +128 -55
  410. localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
  411. localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
  412. localstack/services/sns/constants.py +7 -1
  413. localstack/services/sns/executor.py +9 -2
  414. localstack/services/sns/models.py +25 -25
  415. localstack/services/sns/provider.py +9 -7
  416. localstack/services/sns/publisher.py +37 -23
  417. localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
  418. localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
  419. localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
  420. localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
  421. localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
  422. localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
  423. localstack/services/sns/v2/models.py +167 -0
  424. localstack/services/sns/v2/provider.py +867 -0
  425. localstack/services/sns/v2/utils.py +130 -0
  426. localstack/services/sqs/constants.py +2 -2
  427. localstack/services/sqs/developer_api.py +205 -0
  428. localstack/services/sqs/models.py +71 -36
  429. localstack/services/sqs/provider.py +56 -332
  430. localstack/services/sqs/query_api.py +8 -5
  431. localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
  432. localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
  433. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +7 -5
  434. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
  435. localstack/services/sqs/utils.py +123 -4
  436. localstack/services/ssm/provider.py +3 -4
  437. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
  438. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
  439. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
  440. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
  441. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
  442. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
  443. localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
  444. localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
  445. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
  446. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
  447. localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
  448. localstack/services/stepfunctions/asl/component/common/assign/assign_decl.py +1 -1
  449. localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
  450. localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
  451. localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
  452. localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
  453. localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
  454. localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
  455. localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
  456. localstack/services/stepfunctions/asl/component/common/error_name/states_error_name_type.py +1 -1
  457. localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
  458. localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
  459. localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
  460. localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
  461. localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
  462. localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
  463. localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
  464. localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
  465. localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
  466. localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
  467. localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
  468. localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
  469. localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
  470. localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +4 -4
  471. localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
  472. localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
  473. localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
  474. localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
  475. localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
  476. localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
  477. localstack/services/stepfunctions/asl/component/program/program.py +9 -9
  478. localstack/services/stepfunctions/asl/component/program/states.py +1 -1
  479. localstack/services/stepfunctions/asl/component/state/state.py +10 -11
  480. localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
  481. localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
  482. localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
  483. localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +3 -5
  484. localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
  485. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
  486. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
  487. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
  488. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
  489. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
  490. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
  491. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
  492. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
  493. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
  494. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
  495. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
  496. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
  497. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
  498. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
  499. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
  500. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
  501. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
  502. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +12 -13
  503. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
  504. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +7 -7
  505. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
  506. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
  507. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
  508. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
  509. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +18 -18
  510. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
  511. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
  512. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
  513. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
  514. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
  515. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
  516. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
  517. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
  518. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
  519. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
  520. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
  521. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +5 -5
  522. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
  523. localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +3 -5
  524. localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
  525. localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
  526. localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
  527. localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
  528. localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
  529. localstack/services/stepfunctions/asl/eval/environment.py +22 -24
  530. localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
  531. localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
  532. localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
  533. localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
  534. localstack/services/stepfunctions/asl/eval/states.py +12 -12
  535. localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
  536. localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
  537. localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
  538. localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
  539. localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
  540. localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
  541. localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
  542. localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
  543. localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py +2 -2
  544. localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
  545. localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
  546. localstack/services/stepfunctions/backend/activity.py +4 -4
  547. localstack/services/stepfunctions/backend/alias.py +8 -8
  548. localstack/services/stepfunctions/backend/execution.py +29 -30
  549. localstack/services/stepfunctions/backend/execution_worker.py +7 -7
  550. localstack/services/stepfunctions/backend/state_machine.py +28 -28
  551. localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
  552. localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
  553. localstack/services/stepfunctions/mocking/mock_config.py +9 -9
  554. localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
  555. localstack/services/stepfunctions/packages.py +14 -5
  556. localstack/services/stepfunctions/provider.py +34 -44
  557. localstack/services/stepfunctions/quotas.py +2 -3
  558. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
  559. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
  560. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
  561. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
  562. localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
  563. localstack/services/stores.py +8 -8
  564. localstack/services/transcribe/packages.py +1 -3
  565. localstack/services/transcribe/provider.py +8 -3
  566. localstack/state/codecs.py +61 -0
  567. localstack/state/core.py +11 -5
  568. localstack/state/inspect.py +4 -4
  569. localstack/state/pickle.py +36 -23
  570. localstack/testing/aws/asf_utils.py +3 -2
  571. localstack/testing/aws/cloudformation_utils.py +1 -1
  572. localstack/testing/aws/lambda_utils.py +15 -14
  573. localstack/testing/aws/util.py +3 -2
  574. localstack/testing/pytest/cloudformation/fixtures.py +68 -18
  575. localstack/testing/pytest/container.py +5 -5
  576. localstack/testing/pytest/filters.py +1 -3
  577. localstack/testing/pytest/fixtures.py +188 -49
  578. localstack/testing/pytest/in_memory_localstack.py +1 -3
  579. localstack/testing/pytest/marking.py +42 -15
  580. localstack/testing/pytest/path_filter.py +1 -1
  581. localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
  582. localstack/testing/pytest/stepfunctions/utils.py +11 -10
  583. localstack/testing/pytest/util.py +1 -1
  584. localstack/testing/pytest/validation_tracking.py +3 -4
  585. localstack/testing/scenario/provisioning.py +11 -10
  586. localstack/testing/snapshots/transformer_utility.py +8 -3
  587. localstack/testing/testselection/matching.py +2 -2
  588. localstack/testing/testselection/opt_out.py +1 -1
  589. localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
  590. localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
  591. localstack/testing/testselection/testselection.py +2 -2
  592. localstack/utils/analytics/cli.py +2 -3
  593. localstack/utils/analytics/client.py +5 -5
  594. localstack/utils/analytics/events.py +2 -2
  595. localstack/utils/analytics/metadata.py +6 -4
  596. localstack/utils/analytics/metrics/counter.py +11 -18
  597. localstack/utils/analytics/metrics/registry.py +2 -2
  598. localstack/utils/analytics/publisher.py +4 -5
  599. localstack/utils/analytics/service_providers.py +19 -0
  600. localstack/utils/analytics/service_request_aggregator.py +4 -4
  601. localstack/utils/archives.py +12 -12
  602. localstack/utils/asyncio.py +2 -2
  603. localstack/utils/aws/arns.py +26 -31
  604. localstack/utils/aws/aws_responses.py +21 -28
  605. localstack/utils/aws/aws_stack.py +7 -12
  606. localstack/utils/aws/dead_letter_queue.py +4 -9
  607. localstack/utils/aws/message_forwarding.py +8 -11
  608. localstack/utils/aws/request_context.py +5 -6
  609. localstack/utils/aws/resources.py +1 -1
  610. localstack/utils/aws/templating.py +4 -4
  611. localstack/utils/batch_policy.py +4 -4
  612. localstack/utils/bootstrap.py +37 -30
  613. localstack/utils/catalog/catalog.py +139 -0
  614. localstack/utils/catalog/catalog_loader.py +119 -0
  615. localstack/utils/catalog/common.py +58 -0
  616. localstack/utils/catalog/plugins.py +28 -0
  617. localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
  618. localstack/utils/collections.py +33 -27
  619. localstack/utils/config_listener.py +2 -2
  620. localstack/utils/container_networking.py +5 -6
  621. localstack/utils/container_utils/container_client.py +156 -160
  622. localstack/utils/container_utils/docker_cmd_client.py +97 -81
  623. localstack/utils/container_utils/docker_sdk_client.py +75 -72
  624. localstack/utils/crypto.py +12 -13
  625. localstack/utils/diagnose.py +11 -12
  626. localstack/utils/docker_utils.py +11 -7
  627. localstack/utils/files.py +34 -15
  628. localstack/utils/functions.py +5 -4
  629. localstack/utils/http.py +14 -14
  630. localstack/utils/iputils.py +2 -1
  631. localstack/utils/json.py +21 -7
  632. localstack/utils/kinesis/kinesis_connector.py +2 -1
  633. localstack/utils/net.py +25 -17
  634. localstack/utils/no_exit_argument_parser.py +2 -2
  635. localstack/utils/numbers.py +9 -2
  636. localstack/utils/objects.py +15 -14
  637. localstack/utils/patch.py +14 -7
  638. localstack/utils/platform.py +2 -2
  639. localstack/utils/run.py +15 -14
  640. localstack/utils/scheduler.py +13 -12
  641. localstack/utils/server/tcp_proxy.py +2 -2
  642. localstack/utils/serving.py +3 -4
  643. localstack/utils/strings.py +15 -16
  644. localstack/utils/sync.py +126 -1
  645. localstack/utils/tagging.py +10 -8
  646. localstack/utils/testutil.py +17 -17
  647. localstack/utils/threads.py +3 -3
  648. localstack/utils/time.py +12 -4
  649. localstack/utils/urls.py +1 -3
  650. localstack/utils/xml.py +1 -1
  651. localstack/utils/xray/traceid.py +1 -1
  652. localstack/version.py +16 -3
  653. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
  654. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
  655. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
  656. localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
  657. localstack/packages/terraform.py +0 -47
  658. localstack/services/cloudformation/deploy.html +0 -144
  659. localstack/services/cloudformation/deploy_ui.py +0 -47
  660. localstack/services/cloudformation/plugins.py +0 -12
  661. localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
  662. localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
  663. localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
  664. localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
  665. localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
  666. /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
  667. {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
  668. {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
  669. {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
  670. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
  671. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
  672. {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,3 @@
1
- from typing import Optional, Type
2
-
3
1
  from localstack.services.cloudformation.resource_provider import (
4
2
  CloudFormationResourceProviderPlugin,
5
3
  ResourceProvider,
@@ -10,7 +8,7 @@ class SSMPatchBaselineProviderPlugin(CloudFormationResourceProviderPlugin):
10
8
  name = "AWS::SSM::PatchBaseline"
11
9
 
12
10
  def __init__(self):
13
- self.factory: Optional[Type[ResourceProvider]] = None
11
+ self.factory: type[ResourceProvider] | None = None
14
12
 
15
13
  def load(self):
16
14
  from localstack.services.ssm.resource_providers.aws_ssm_patchbaseline import (
@@ -1,11 +1,10 @@
1
1
  import ast
2
- from typing import Optional
3
2
 
4
3
  from antlr4 import ParserRuleContext
5
4
  from antlr4.tree.Tree import ParseTree, TerminalNodeImpl
6
5
 
7
6
 
8
- def is_production(pt: ParseTree, rule_index: Optional[int] = None) -> Optional[ParserRuleContext]:
7
+ def is_production(pt: ParseTree, rule_index: int | None = None) -> ParserRuleContext | None:
9
8
  if isinstance(pt, ParserRuleContext):
10
9
  prc = pt.getRuleContext() # noqa
11
10
  if rule_index is not None:
@@ -14,7 +13,7 @@ def is_production(pt: ParseTree, rule_index: Optional[int] = None) -> Optional[P
14
13
  return None
15
14
 
16
15
 
17
- def is_terminal(pt: ParseTree, token_type: Optional[int] = None) -> Optional[TerminalNodeImpl]:
16
+ def is_terminal(pt: ParseTree, token_type: int | None = None) -> TerminalNodeImpl | None:
18
17
  if isinstance(pt, TerminalNodeImpl):
19
18
  if token_type is not None:
20
19
  return pt if pt.getSymbol().type == token_type else None
@@ -22,7 +21,7 @@ def is_terminal(pt: ParseTree, token_type: Optional[int] = None) -> Optional[Ter
22
21
  return None
23
22
 
24
23
 
25
- def from_string_literal(parser_rule_context: ParserRuleContext) -> Optional[str]:
24
+ def from_string_literal(parser_rule_context: ParserRuleContext) -> str | None:
26
25
  string_literal = parser_rule_context.getText()
27
26
  if string_literal.startswith('"') and string_literal.endswith('"'):
28
27
  string_literal = string_literal[1:-1]
@@ -15,7 +15,7 @@ class AssignDecl(EvalComponent):
15
15
  self.declaration_bindings = declaration_bindings
16
16
 
17
17
  def _eval_body(self, env: Environment) -> None:
18
- declarations: dict[str, Any] = dict()
18
+ declarations: dict[str, Any] = {}
19
19
  for declaration_binding in self.declaration_bindings:
20
20
  declaration_binding.eval(env=env)
21
21
  binding: dict[str, Any] = env.stack.pop()
@@ -15,5 +15,5 @@ class AssignDeclBinding(EvalComponent):
15
15
  self.binding = binding
16
16
 
17
17
  def _eval_body(self, env: Environment) -> None:
18
- env.stack.append(dict())
18
+ env.stack.append({})
19
19
  self.binding.eval(env=env)
@@ -13,7 +13,7 @@ class AssignTemplateValueArray(AssignTemplateValue):
13
13
  self.values = values
14
14
 
15
15
  def _eval_body(self, env: Environment) -> None:
16
- arr = list()
16
+ arr = []
17
17
  for value in self.values:
18
18
  value.eval(env)
19
19
  arr.append(env.stack.pop())
@@ -16,6 +16,6 @@ class AssignTemplateValueObject(AssignTemplateValue):
16
16
  self.bindings = bindings
17
17
 
18
18
  def _eval_body(self, env: Environment) -> None:
19
- env.stack.append(dict())
19
+ env.stack.append({})
20
20
  for binding in self.bindings:
21
21
  binding.eval(env)
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.services.stepfunctions.asl.component.common.assign.assign_decl import AssignDecl
6
6
  from localstack.services.stepfunctions.asl.component.common.catch.catcher_outcome import (
@@ -34,19 +34,19 @@ class CatcherDecl(EvalComponent):
34
34
 
35
35
  error_equals: Final[ErrorEqualsDecl]
36
36
  next_decl: Final[Next]
37
- result_path: Final[Optional[ResultPath]]
38
- assign: Final[Optional[AssignDecl]]
39
- output: Final[Optional[Output]]
40
- comment: Final[Optional[Comment]]
37
+ result_path: Final[ResultPath | None]
38
+ assign: Final[AssignDecl | None]
39
+ output: Final[Output | None]
40
+ comment: Final[Comment | None]
41
41
 
42
42
  def __init__(
43
43
  self,
44
44
  error_equals: ErrorEqualsDecl,
45
45
  next_decl: Next,
46
- result_path: Optional[ResultPath],
47
- assign: Optional[AssignDecl],
48
- output: Optional[Output],
49
- comment: Optional[Comment],
46
+ result_path: ResultPath | None,
47
+ assign: AssignDecl | None,
48
+ output: Output | None,
49
+ comment: Comment | None,
50
50
  ):
51
51
  self.error_equals = error_equals
52
52
  self.next_decl = next_decl
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.services.stepfunctions.asl.component.common.error_name.error_name import ErrorName
4
4
 
@@ -10,7 +10,7 @@ class CustomErrorName(ErrorName):
10
10
  States MAY report errors with other names, which MUST NOT begin with the prefix "States.".
11
11
  """
12
12
 
13
- def __init__(self, error_name: Optional[str]):
13
+ def __init__(self, error_name: str | None):
14
14
  if error_name is not None and error_name.startswith(ILLEGAL_CUSTOM_ERROR_PREFIX):
15
15
  raise ValueError(
16
16
  f"Custom Error Names MUST NOT begin with the prefix 'States.', got '{error_name}'."
@@ -1,18 +1,18 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import abc
4
- from typing import Final, Optional
4
+ from typing import Final
5
5
 
6
6
  from localstack.services.stepfunctions.asl.component.component import Component
7
7
 
8
8
 
9
9
  class ErrorName(Component, abc.ABC):
10
- error_name: Final[Optional[str]]
10
+ error_name: Final[str | None]
11
11
 
12
- def __init__(self, error_name: Optional[str]):
12
+ def __init__(self, error_name: str | None):
13
13
  self.error_name = error_name
14
14
 
15
- def matches(self, error_name: Optional[str]) -> bool:
15
+ def matches(self, error_name: str | None) -> bool:
16
16
  return self.error_name == error_name
17
17
 
18
18
  def __eq__(self, other):
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.aws.api.stepfunctions import (
4
4
  EvaluationFailedEventDetails,
@@ -16,16 +16,16 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
16
16
  class FailureEvent:
17
17
  state_name: Final[str]
18
18
  source_event_id: Final[int]
19
- error_name: Final[Optional[ErrorName]]
19
+ error_name: Final[ErrorName | None]
20
20
  event_type: Final[HistoryEventType]
21
- event_details: Final[Optional[EventDetails]]
21
+ event_details: Final[EventDetails | None]
22
22
 
23
23
  def __init__(
24
24
  self,
25
25
  env: Environment,
26
- error_name: Optional[ErrorName],
26
+ error_name: ErrorName | None,
27
27
  event_type: HistoryEventType,
28
- event_details: Optional[EventDetails] = None,
28
+ event_details: EventDetails | None = None,
29
29
  ):
30
30
  self.state_name = env.next_state_name
31
31
  self.source_event_id = env.event_history_context.source_event_id
@@ -40,7 +40,7 @@ class FailureEventException(Exception):
40
40
  def __init__(self, failure_event: FailureEvent):
41
41
  self.failure_event = failure_event
42
42
 
43
- def extract_error_cause_pair(self) -> Optional[tuple[Optional[str], Optional[str]]]:
43
+ def extract_error_cause_pair(self) -> tuple[str | None, str | None] | None:
44
44
  if self.failure_event.event_details is None:
45
45
  return None
46
46
 
@@ -54,7 +54,7 @@ class FailureEventException(Exception):
54
54
  cause = failure_event_spec["cause"]
55
55
  return error, cause
56
56
 
57
- def get_evaluation_failed_event_details(self) -> Optional[EvaluationFailedEventDetails]:
57
+ def get_evaluation_failed_event_details(self) -> EvaluationFailedEventDetails | None:
58
58
  original_failed_event_details = self.failure_event.event_details[
59
59
  "evaluationFailedEventDetails"
60
60
  ]
@@ -80,7 +80,7 @@ class FailureEventException(Exception):
80
80
 
81
81
  return evaluation_failed_event_details
82
82
 
83
- def get_execution_failed_event_details(self) -> Optional[ExecutionFailedEventDetails]:
83
+ def get_execution_failed_event_details(self) -> ExecutionFailedEventDetails | None:
84
84
  maybe_error_cause_pair = self.extract_error_cause_pair()
85
85
  if maybe_error_cause_pair is None:
86
86
  return None
@@ -40,7 +40,7 @@ def _error_name(error_name: StatesErrorNameType) -> str:
40
40
 
41
41
 
42
42
  def _reverse_error_name_lookup() -> dict[str, StatesErrorNameType]:
43
- lookup: dict[str, StatesErrorNameType] = dict()
43
+ lookup: dict[str, StatesErrorNameType] = {}
44
44
  for error_name in StatesErrorNameType:
45
45
  error_text: str = _error_name(error_name)
46
46
  lookup[error_text] = error_name
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.services.stepfunctions.asl.component.common.jsonata.jsonata_template_value import (
6
6
  JSONataTemplateValue,
@@ -17,7 +17,7 @@ class JSONataTemplateBinding(EvalComponent):
17
17
  self.identifier = identifier
18
18
  self.value = value
19
19
 
20
- def _field_name(self) -> Optional[str]:
20
+ def _field_name(self) -> str | None:
21
21
  return self.identifier
22
22
 
23
23
  def _eval_body(self, env: Environment) -> None:
@@ -13,7 +13,7 @@ class JSONataTemplateValueArray(JSONataTemplateValue):
13
13
  self.values = values
14
14
 
15
15
  def _eval_body(self, env: Environment) -> None:
16
- arr = list()
16
+ arr = []
17
17
  for value in self.values:
18
18
  value.eval(env)
19
19
  arr.append(env.stack.pop())
@@ -16,6 +16,6 @@ class JSONataTemplateValueObject(JSONataTemplateValue):
16
16
  self.bindings = bindings
17
17
 
18
18
  def _eval_body(self, env: Environment) -> None:
19
- env.stack.append(dict())
19
+ env.stack.append({})
20
20
  for binding in self.bindings:
21
21
  binding.eval(env)
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
4
4
  from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
@@ -22,14 +22,14 @@ from localstack.services.stepfunctions.asl.utils.json_path import NoSuchJsonPath
22
22
 
23
23
 
24
24
  class InputPath(EvalComponent):
25
- string_sampler: Final[Optional[StringSampler]]
25
+ string_sampler: Final[StringSampler | None]
26
26
 
27
- def __init__(self, string_sampler: Optional[StringSampler]):
27
+ def __init__(self, string_sampler: StringSampler | None):
28
28
  self.string_sampler = string_sampler
29
29
 
30
30
  def _eval_body(self, env: Environment) -> None:
31
31
  if self.string_sampler is None:
32
- env.stack.append(dict())
32
+ env.stack.append({})
33
33
  return
34
34
  if isinstance(self.string_sampler, StringJsonPath):
35
35
  # JsonPaths are sampled from a given state, hence pass the state's input.
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
4
4
  from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
@@ -21,14 +21,14 @@ from localstack.services.stepfunctions.asl.utils.json_path import NoSuchJsonPath
21
21
 
22
22
 
23
23
  class OutputPath(EvalComponent):
24
- string_sampler: Final[Optional[StringSampler]]
24
+ string_sampler: Final[StringSampler | None]
25
25
 
26
- def __init__(self, string_sampler: Optional[StringSampler]):
26
+ def __init__(self, string_sampler: StringSampler | None):
27
27
  self.string_sampler = string_sampler
28
28
 
29
29
  def _eval_body(self, env: Environment) -> None:
30
30
  if self.string_sampler is None:
31
- env.states.reset(input_value=dict())
31
+ env.states.reset(input_value={})
32
32
  return
33
33
  try:
34
34
  self.string_sampler.eval(env=env)
@@ -1,5 +1,5 @@
1
1
  import copy
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from jsonpath_ng import parse
5
5
 
@@ -10,9 +10,9 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
10
10
  class ResultPath(EvalComponent):
11
11
  DEFAULT_PATH: Final[str] = "$"
12
12
 
13
- result_path_src: Final[Optional[str]]
13
+ result_path_src: Final[str | None]
14
14
 
15
- def __init__(self, result_path_src: Optional[str]):
15
+ def __init__(self, result_path_src: str | None):
16
16
  self.result_path_src = result_path_src
17
17
 
18
18
  def _eval_body(self, env: Environment) -> None:
@@ -11,7 +11,7 @@ class PayloadArr(PayloadValue):
11
11
  self.payload_values: Final[list[PayloadValue]] = payload_values
12
12
 
13
13
  def _eval_body(self, env: Environment) -> None:
14
- arr = list()
14
+ arr = []
15
15
  for payload_value in self.payload_values:
16
16
  payload_value.eval(env)
17
17
  arr.append(env.stack.pop())
@@ -1,5 +1,5 @@
1
1
  import abc
2
- from typing import Any, Final, Optional
2
+ from typing import Any, Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.payload.payloadvalue.payload_value import (
5
5
  PayloadValue,
@@ -16,7 +16,7 @@ class PayloadBinding(PayloadValue, abc.ABC):
16
16
  def __init__(self, field: str):
17
17
  self.field = field
18
18
 
19
- def _field_name(self) -> Optional[str]:
19
+ def _field_name(self) -> str | None:
20
20
  return self.field
21
21
 
22
22
  @abc.abstractmethod
@@ -36,7 +36,7 @@ class PayloadBindingStringExpressionSimple(PayloadBinding):
36
36
  super().__init__(field=field)
37
37
  self.string_expression_simple = string_expression_simple
38
38
 
39
- def _field_name(self) -> Optional[str]:
39
+ def _field_name(self) -> str | None:
40
40
  return f"{self.field}.$"
41
41
 
42
42
  def _eval_val(self, env: Environment) -> Any:
@@ -14,6 +14,6 @@ class PayloadTmpl(PayloadValue):
14
14
  self.payload_bindings: Final[list[PayloadBinding]] = payload_bindings
15
15
 
16
16
  def _eval_body(self, env: Environment) -> None:
17
- env.stack.append(dict())
17
+ env.stack.append({})
18
18
  for payload_binding in self.payload_bindings:
19
19
  payload_binding.eval(env)
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import time
4
- from typing import Final, Optional
4
+ from typing import Final
5
5
 
6
6
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
7
7
  from localstack.services.stepfunctions.asl.component.common.error_name.error_equals_decl import (
@@ -38,17 +38,17 @@ class RetrierDecl(EvalComponent):
38
38
  backoff_rate: Final[BackoffRateDecl]
39
39
  max_delay_seconds: Final[MaxDelaySecondsDecl]
40
40
  jitter_strategy: Final[JitterStrategyDecl]
41
- comment: Final[Optional[Comment]]
41
+ comment: Final[Comment | None]
42
42
 
43
43
  def __init__(
44
44
  self,
45
45
  error_equals: ErrorEqualsDecl,
46
- interval_seconds: Optional[IntervalSecondsDecl] = None,
47
- max_attempts: Optional[MaxAttemptsDecl] = None,
48
- backoff_rate: Optional[BackoffRateDecl] = None,
49
- max_delay_seconds: Optional[MaxDelaySecondsDecl] = None,
50
- jitter_strategy: Optional[JitterStrategyDecl] = None,
51
- comment: Optional[Comment] = None,
46
+ interval_seconds: IntervalSecondsDecl | None = None,
47
+ max_attempts: MaxAttemptsDecl | None = None,
48
+ backoff_rate: BackoffRateDecl | None = None,
49
+ max_delay_seconds: MaxDelaySecondsDecl | None = None,
50
+ jitter_strategy: JitterStrategyDecl | None = None,
51
+ comment: Comment | None = None,
52
52
  ):
53
53
  self.error_equals = error_equals
54
54
  self.interval_seconds = interval_seconds or IntervalSecondsDecl()
@@ -1,6 +1,6 @@
1
1
  import abc
2
2
  import copy
3
- from typing import Any, Final, Optional
3
+ from typing import Any, Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
6
6
  from localstack.services.events.utils import to_json_str
@@ -46,7 +46,7 @@ class StringExpression(EvalComponent, abc.ABC):
46
46
  def __init__(self, literal_value: str):
47
47
  self.literal_value = literal_value
48
48
 
49
- def _field_name(self) -> Optional[str]:
49
+ def _field_name(self) -> str | None:
50
50
  return None
51
51
 
52
52
 
@@ -129,7 +129,7 @@ class StringVariableSample(StringSampler):
129
129
  expression_variable_references: set[VariableReference] = (
130
130
  extract_jsonata_variable_references(self.expression)
131
131
  )
132
- variable_declarations_list = list()
132
+ variable_declarations_list = []
133
133
  if self.query_language_mode == QueryLanguageMode.JSONata:
134
134
  # Sample $states values into expression.
135
135
  states_variable_declarations: VariableDeclarations = (
@@ -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 (
5
5
  ExecutionFailedEventDetails,
@@ -44,13 +44,13 @@ class Timeout(EvalComponent, abc.ABC):
44
44
  class TimeoutSeconds(Timeout):
45
45
  DEFAULT_TIMEOUT_SECONDS: Final[int] = 99999999
46
46
 
47
- def __init__(self, timeout_seconds: int, is_default: Optional[bool] = None):
47
+ def __init__(self, timeout_seconds: int, is_default: bool | None = None):
48
48
  if not isinstance(timeout_seconds, int) and timeout_seconds <= 0:
49
49
  raise ValueError(
50
50
  f"Expected non-negative integer for TimeoutSeconds, got '{timeout_seconds}' instead."
51
51
  )
52
52
  self.timeout_seconds: Final[int] = timeout_seconds
53
- self.is_default: Optional[bool] = is_default
53
+ self.is_default: bool | None = is_default
54
54
 
55
55
  def is_default_value(self) -> bool:
56
56
  if self.is_default is not None:
@@ -1,6 +1,5 @@
1
1
  import abc
2
2
  import logging
3
- from typing import Optional
4
3
 
5
4
  from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
6
5
  FailureEventException,
@@ -14,7 +13,7 @@ LOG = logging.getLogger(__name__)
14
13
 
15
14
 
16
15
  class EvalComponent(Component, abc.ABC):
17
- __heap_key: Optional[str] = None
16
+ __heap_key: str | None = None
18
17
 
19
18
  @property
20
19
  def heap_key(self) -> str:
@@ -82,5 +81,5 @@ class EvalComponent(Component, abc.ABC):
82
81
  def _eval_body(self, env: Environment) -> None:
83
82
  raise NotImplementedError()
84
83
 
85
- def _field_name(self) -> Optional[str]:
84
+ def _field_name(self) -> str | None:
86
85
  return self.__class__.__name__
@@ -1,5 +1,5 @@
1
1
  import abc
2
- from typing import Any, Final, Optional
2
+ from typing import Any, Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.string.string_expression import (
5
5
  StringVariableSample,
@@ -32,9 +32,9 @@ class Argument(EvalComponent, abc.ABC):
32
32
 
33
33
 
34
34
  class ArgumentLiteral(Argument):
35
- definition_value: Final[Optional[Any]]
35
+ definition_value: Final[Any | None]
36
36
 
37
- def __init__(self, definition_value: Optional[Any]):
37
+ def __init__(self, definition_value: Any | None):
38
38
  self.definition_value = definition_value
39
39
 
40
40
  def _eval_argument(self, env: Environment) -> Any:
@@ -97,7 +97,7 @@ class ArgumentList(Argument):
97
97
  self.size = len(arguments)
98
98
 
99
99
  def _eval_argument(self, env: Environment) -> Any:
100
- values = list()
100
+ values = []
101
101
  for argument in self.arguments:
102
102
  argument.eval(env=env)
103
103
  argument_value = env.stack.pop()
@@ -60,7 +60,7 @@ class ArrayPartition(StatesFunction):
60
60
 
61
61
  @staticmethod
62
62
  def _to_chunks(array: list, chunk_size: int):
63
- chunks = list()
63
+ chunks = []
64
64
  for i in range(0, len(array), chunk_size):
65
65
  chunks.append(array[i : i + chunk_size])
66
66
  return chunks
@@ -95,7 +95,7 @@ class StringFormat(StatesFunction):
95
95
  value_parts: list[str] = list(map(StringFormat._to_str_repr, value))
96
96
  return f"[{', '.join(value_parts)}]"
97
97
  elif isinstance(value, dict):
98
- dict_items = list()
98
+ dict_items = []
99
99
  for d_key, d_value in value.items():
100
100
  d_value_lit = StringFormat._to_str_repr(d_value)
101
101
  dict_items.append(f"{d_key}={d_value_lit}")
@@ -24,7 +24,7 @@ class StatesFunctionArray(StatesFunction):
24
24
 
25
25
  def _eval_body(self, env: Environment) -> None:
26
26
  self.argument_list.eval(env=env)
27
- values: list[Any] = list()
27
+ values: list[Any] = []
28
28
  for _ in range(self.argument_list.size):
29
29
  values.append(env.stack.pop())
30
30
  values.reverse()
@@ -41,7 +41,7 @@ class StatesFunctionFormat(StatesFunction):
41
41
  # TODO: investigate behaviour for incorrect number of arguments in string format.
42
42
  self.argument_list.eval(env=env)
43
43
 
44
- values: list[Any] = list()
44
+ values: list[Any] = []
45
45
  for _ in range(self.argument_list.size):
46
46
  values.append(env.stack.pop())
47
47
  string_format: str = values.pop()
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.services.stepfunctions.asl.jsonata.jsonata import (
4
4
  VariableDeclarations,
@@ -75,9 +75,9 @@ _DECLARATION_BY_VARIABLE_REFERENCE: Final[dict[VariableReference, str]] = {
75
75
  def get_intrinsic_functions_declarations(
76
76
  variable_references: set[VariableReference],
77
77
  ) -> VariableDeclarations:
78
- declarations: list[str] = list()
78
+ declarations: list[str] = []
79
79
  for variable_reference in variable_references:
80
- declaration: Optional[VariableDeclarations] = _DECLARATION_BY_VARIABLE_REFERENCE.get(
80
+ declaration: VariableDeclarations | None = _DECLARATION_BY_VARIABLE_REFERENCE.get(
81
81
  variable_reference
82
82
  )
83
83
  if declaration:
@@ -13,4 +13,4 @@ class IdentifiedMember(Member):
13
13
 
14
14
  class DollarMember(IdentifiedMember):
15
15
  def __init__(self):
16
- super(DollarMember, self).__init__(identifier="$")
16
+ super().__init__(identifier="$")
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  import threading
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import (
6
6
  ExecutionAbortedEventDetails,
@@ -47,18 +47,18 @@ class Program(EvalComponent):
47
47
  query_language: Final[QueryLanguage]
48
48
  start_at: Final[StartAt]
49
49
  states: Final[States]
50
- timeout_seconds: Final[Optional[TimeoutSeconds]]
51
- comment: Final[Optional[Comment]]
52
- version: Final[Optional[Version]]
50
+ timeout_seconds: Final[TimeoutSeconds | None]
51
+ comment: Final[Comment | None]
52
+ version: Final[Version | None]
53
53
 
54
54
  def __init__(
55
55
  self,
56
56
  query_language: QueryLanguage,
57
57
  start_at: StartAt,
58
58
  states: States,
59
- timeout_seconds: Optional[TimeoutSeconds],
60
- comment: Optional[Comment] = None,
61
- version: Optional[Version] = None,
59
+ timeout_seconds: TimeoutSeconds | None,
60
+ comment: Comment | None = None,
61
+ version: Version | None = None,
62
62
  ):
63
63
  self.query_language = query_language
64
64
  self.start_at = start_at
@@ -68,7 +68,7 @@ class Program(EvalComponent):
68
68
  self.version = version
69
69
 
70
70
  def _get_state(self, state_name: str) -> CommonStateField:
71
- state: Optional[CommonStateField] = self.states.states.get(state_name, None)
71
+ state: CommonStateField | None = self.states.states.get(state_name, None)
72
72
  if state is None:
73
73
  raise ValueError(f"No such state {state}.")
74
74
  return state
@@ -111,7 +111,7 @@ class Program(EvalComponent):
111
111
  program_state: ProgramState = env.program_state()
112
112
  if isinstance(program_state, ProgramError):
113
113
  exec_failed_event_details = select_from_typed_dict(
114
- typed_dict=ExecutionFailedEventDetails, obj=program_state.error or dict()
114
+ typed_dict=ExecutionFailedEventDetails, obj=program_state.error or {}
115
115
  )
116
116
  env.event_manager.add_event(
117
117
  context=env.event_history_context,
@@ -4,4 +4,4 @@ from localstack.services.stepfunctions.asl.component.state.state import CommonSt
4
4
 
5
5
  class States(Component):
6
6
  def __init__(self):
7
- self.states: dict[str, CommonStateField] = dict()
7
+ self.states: dict[str, CommonStateField] = {}