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
@@ -1061,6 +1061,14 @@ class BadDigest(ServiceException):
1061
1061
  CalculatedDigest: Optional[ContentMD5]
1062
1062
 
1063
1063
 
1064
+ class AuthorizationHeaderMalformed(ServiceException):
1065
+ code: str = "AuthorizationHeaderMalformed"
1066
+ sender_fault: bool = False
1067
+ status_code: int = 400
1068
+ Region: Optional[BucketRegion]
1069
+ HostId: Optional[HostId]
1070
+
1071
+
1064
1072
  AbortDate = datetime
1065
1073
 
1066
1074
 
@@ -1477,6 +1485,8 @@ class CopyObjectRequest(ServiceRequest):
1477
1485
  GrantRead: Optional[GrantRead]
1478
1486
  GrantReadACP: Optional[GrantReadACP]
1479
1487
  GrantWriteACP: Optional[GrantWriteACP]
1488
+ IfMatch: Optional[IfMatch]
1489
+ IfNoneMatch: Optional[IfNoneMatch]
1480
1490
  Key: ObjectKey
1481
1491
  Metadata: Optional[Metadata]
1482
1492
  MetadataDirective: Optional[MetadataDirective]
@@ -3832,6 +3842,8 @@ class S3Api:
3832
3842
  grant_read: GrantRead | None = None,
3833
3843
  grant_read_acp: GrantReadACP | None = None,
3834
3844
  grant_write_acp: GrantWriteACP | None = None,
3845
+ if_match: IfMatch | None = None,
3846
+ if_none_match: IfNoneMatch | None = None,
3835
3847
  metadata: Metadata | None = None,
3836
3848
  metadata_directive: MetadataDirective | None = None,
3837
3849
  tagging_directive: TaggingDirective | None = None,
@@ -65,6 +65,7 @@ MultiRegionAccessPointClientToken = str
65
65
  MultiRegionAccessPointId = str
66
66
  MultiRegionAccessPointName = str
67
67
  NoSuchPublicAccessBlockConfigurationMessage = str
68
+ NonEmptyKmsKeyArnString = str
68
69
  NonEmptyMaxLength1024String = str
69
70
  NonEmptyMaxLength2048String = str
70
71
  NonEmptyMaxLength256String = str
@@ -147,6 +148,20 @@ class BucketVersioningStatus(StrEnum):
147
148
  Suspended = "Suspended"
148
149
 
149
150
 
151
+ class ComputeObjectChecksumAlgorithm(StrEnum):
152
+ CRC32 = "CRC32"
153
+ CRC32C = "CRC32C"
154
+ CRC64NVME = "CRC64NVME"
155
+ MD5 = "MD5"
156
+ SHA1 = "SHA1"
157
+ SHA256 = "SHA256"
158
+
159
+
160
+ class ComputeObjectChecksumType(StrEnum):
161
+ FULL_OBJECT = "FULL_OBJECT"
162
+ COMPOSITE = "COMPOSITE"
163
+
164
+
150
165
  class DeleteMarkerReplicationStatus(StrEnum):
151
166
  Enabled = "Enabled"
152
167
  Disabled = "Disabled"
@@ -272,6 +287,7 @@ class OperationName(StrEnum):
272
287
  S3PutObjectLegalHold = "S3PutObjectLegalHold"
273
288
  S3PutObjectRetention = "S3PutObjectRetention"
274
289
  S3ReplicateObject = "S3ReplicateObject"
290
+ S3ComputeObjectChecksum = "S3ComputeObjectChecksum"
275
291
 
276
292
 
277
293
  class OutputSchemaVersion(StrEnum):
@@ -857,6 +873,7 @@ class CreateAccessPointRequest(ServiceRequest):
857
873
  PublicAccessBlockConfiguration: Optional[PublicAccessBlockConfiguration]
858
874
  BucketAccountId: Optional[AccountId]
859
875
  Scope: Optional[Scope]
876
+ Tags: Optional[TagList]
860
877
 
861
878
 
862
879
  class CreateAccessPointResult(TypedDict, total=False):
@@ -886,6 +903,36 @@ class CreateBucketResult(TypedDict, total=False):
886
903
  BucketArn: Optional[S3RegionalBucketArn]
887
904
 
888
905
 
906
+ class NotSSEFilter(TypedDict, total=False):
907
+ pass
908
+
909
+
910
+ class SSECFilter(TypedDict, total=False):
911
+ pass
912
+
913
+
914
+ class DSSEKMSFilter(TypedDict, total=False):
915
+ KmsKeyArn: Optional[NonEmptyKmsKeyArnString]
916
+
917
+
918
+ class SSEKMSFilter(TypedDict, total=False):
919
+ KmsKeyArn: Optional[NonEmptyKmsKeyArnString]
920
+ BucketKeyEnabled: Optional[Boolean]
921
+
922
+
923
+ class SSES3Filter(TypedDict, total=False):
924
+ pass
925
+
926
+
927
+ class ObjectEncryptionFilter(TypedDict, total=False):
928
+ SSES3: Optional[SSES3Filter]
929
+ SSEKMS: Optional[SSEKMSFilter]
930
+ DSSEKMS: Optional[DSSEKMSFilter]
931
+ SSEC: Optional[SSECFilter]
932
+ NOTSSE: Optional[NotSSEFilter]
933
+
934
+
935
+ ObjectEncryptionFilterList = List[ObjectEncryptionFilter]
889
936
  StorageClassList = List[S3StorageClass]
890
937
  ObjectSizeLessThanBytes = int
891
938
  ObjectSizeGreaterThanBytes = int
@@ -911,6 +958,7 @@ class JobManifestGeneratorFilter(TypedDict, total=False):
911
958
  ObjectSizeGreaterThanBytes: Optional[ObjectSizeGreaterThanBytes]
912
959
  ObjectSizeLessThanBytes: Optional[ObjectSizeLessThanBytes]
913
960
  MatchAnyStorageClass: Optional[StorageClassList]
961
+ MatchAnyObjectEncryption: Optional[ObjectEncryptionFilterList]
914
962
 
915
963
 
916
964
  class SSEKMSEncryption(TypedDict, total=False):
@@ -979,6 +1027,12 @@ class JobReport(TypedDict, total=False):
979
1027
  Enabled: Boolean
980
1028
  Prefix: Optional[ReportPrefixString]
981
1029
  ReportScope: Optional[JobReportScope]
1030
+ ExpectedBucketOwner: Optional[AccountId]
1031
+
1032
+
1033
+ class S3ComputeObjectChecksumOperation(TypedDict, total=False):
1034
+ ChecksumAlgorithm: Optional[ComputeObjectChecksumAlgorithm]
1035
+ ChecksumType: Optional[ComputeObjectChecksumType]
982
1036
 
983
1037
 
984
1038
  class S3ReplicateObjectOperation(TypedDict, total=False):
@@ -1110,6 +1164,7 @@ class JobOperation(TypedDict, total=False):
1110
1164
  S3PutObjectLegalHold: Optional[S3SetObjectLegalHoldOperation]
1111
1165
  S3PutObjectRetention: Optional[S3SetObjectRetentionOperation]
1112
1166
  S3ReplicateObject: Optional[S3ReplicateObjectOperation]
1167
+ S3ComputeObjectChecksum: Optional[S3ComputeObjectChecksumOperation]
1113
1168
 
1114
1169
 
1115
1170
  class CreateJobRequest(ServiceRequest):
@@ -2423,6 +2478,7 @@ class S3ControlApi:
2423
2478
  public_access_block_configuration: PublicAccessBlockConfiguration | None = None,
2424
2479
  bucket_account_id: AccountId | None = None,
2425
2480
  scope: Scope | None = None,
2481
+ tags: TagList | None = None,
2426
2482
  **kwargs,
2427
2483
  ) -> CreateAccessPointResult:
2428
2484
  raise NotImplementedError
@@ -201,23 +201,21 @@ class EventBridgeParameters(TypedDict, total=False):
201
201
 
202
202
  TagMap = Dict[TagKey, TagValue]
203
203
  Tags = List[TagMap]
204
- PlacementStrategy = TypedDict(
205
- "PlacementStrategy",
206
- {
207
- "field": Optional[PlacementStrategyField],
208
- "type": Optional[PlacementStrategyType],
209
- },
210
- total=False,
211
- )
204
+
205
+
206
+ class PlacementStrategy(TypedDict, total=False):
207
+ field: Optional[PlacementStrategyField]
208
+ type: Optional[PlacementStrategyType]
209
+
210
+
212
211
  PlacementStrategies = List[PlacementStrategy]
213
- PlacementConstraint = TypedDict(
214
- "PlacementConstraint",
215
- {
216
- "expression": Optional[PlacementConstraintExpression],
217
- "type": Optional[PlacementConstraintType],
218
- },
219
- total=False,
220
- )
212
+
213
+
214
+ class PlacementConstraint(TypedDict, total=False):
215
+ expression: Optional[PlacementConstraintExpression]
216
+ type: Optional[PlacementConstraintType]
217
+
218
+
221
219
  PlacementConstraints = List[PlacementConstraint]
222
220
 
223
221
 
@@ -4426,6 +4426,7 @@ class GetDeployablePatchSnapshotForInstanceRequest(ServiceRequest):
4426
4426
  InstanceId: InstanceId
4427
4427
  SnapshotId: SnapshotId
4428
4428
  BaselineOverride: Optional[BaselineOverride]
4429
+ UseS3DualStackEndpoint: Optional[Boolean]
4429
4430
 
4430
4431
 
4431
4432
  class GetDeployablePatchSnapshotForInstanceResult(TypedDict, total=False):
@@ -6749,6 +6750,7 @@ class SsmApi:
6749
6750
  instance_id: InstanceId,
6750
6751
  snapshot_id: SnapshotId,
6751
6752
  baseline_override: BaselineOverride | None = None,
6753
+ use_s3_dual_stack_endpoint: Boolean | None = None,
6752
6754
  **kwargs,
6753
6755
  ) -> GetDeployablePatchSnapshotForInstanceResult:
6754
6756
  raise NotImplementedError
@@ -501,15 +501,10 @@ class CloudWatchLogsLogGroup(TypedDict, total=False):
501
501
  logGroupArn: Optional[Arn]
502
502
 
503
503
 
504
- EncryptionConfiguration = TypedDict(
505
- "EncryptionConfiguration",
506
- {
507
- "kmsKeyId": Optional[KmsKeyId],
508
- "kmsDataKeyReusePeriodSeconds": Optional[KmsDataKeyReusePeriodSeconds],
509
- "type": EncryptionType,
510
- },
511
- total=False,
512
- )
504
+ class EncryptionConfiguration(TypedDict, total=False):
505
+ kmsKeyId: Optional[KmsKeyId]
506
+ kmsDataKeyReusePeriodSeconds: Optional[KmsDataKeyReusePeriodSeconds]
507
+ type: EncryptionType
513
508
 
514
509
 
515
510
  class Tag(TypedDict, total=False):
@@ -567,22 +562,17 @@ class LoggingConfiguration(TypedDict, total=False):
567
562
  destinations: Optional[LogDestinationList]
568
563
 
569
564
 
570
- CreateStateMachineInput = TypedDict(
571
- "CreateStateMachineInput",
572
- {
573
- "name": Name,
574
- "definition": Definition,
575
- "roleArn": Arn,
576
- "type": Optional[StateMachineType],
577
- "loggingConfiguration": Optional[LoggingConfiguration],
578
- "tags": Optional[TagList],
579
- "tracingConfiguration": Optional[TracingConfiguration],
580
- "publish": Optional[Publish],
581
- "versionDescription": Optional[VersionDescription],
582
- "encryptionConfiguration": Optional[EncryptionConfiguration],
583
- },
584
- total=False,
585
- )
565
+ class CreateStateMachineInput(TypedDict, total=False):
566
+ name: Name
567
+ definition: Definition
568
+ roleArn: Arn
569
+ type: Optional[StateMachineType]
570
+ loggingConfiguration: Optional[LoggingConfiguration]
571
+ tags: Optional[TagList]
572
+ tracingConfiguration: Optional[TracingConfiguration]
573
+ publish: Optional[Publish]
574
+ versionDescription: Optional[VersionDescription]
575
+ encryptionConfiguration: Optional[EncryptionConfiguration]
586
576
 
587
577
 
588
578
  class CreateStateMachineOutput(TypedDict, total=False):
@@ -756,26 +746,21 @@ class DescribeStateMachineInput(ServiceRequest):
756
746
  includedData: Optional[IncludedData]
757
747
 
758
748
 
759
- DescribeStateMachineOutput = TypedDict(
760
- "DescribeStateMachineOutput",
761
- {
762
- "stateMachineArn": Arn,
763
- "name": Name,
764
- "status": Optional[StateMachineStatus],
765
- "definition": Definition,
766
- "roleArn": Arn,
767
- "type": StateMachineType,
768
- "creationDate": Timestamp,
769
- "loggingConfiguration": Optional[LoggingConfiguration],
770
- "tracingConfiguration": Optional[TracingConfiguration],
771
- "label": Optional[MapRunLabel],
772
- "revisionId": Optional[RevisionId],
773
- "description": Optional[VersionDescription],
774
- "encryptionConfiguration": Optional[EncryptionConfiguration],
775
- "variableReferences": Optional[VariableReferences],
776
- },
777
- total=False,
778
- )
749
+ class DescribeStateMachineOutput(TypedDict, total=False):
750
+ stateMachineArn: Arn
751
+ name: Name
752
+ status: Optional[StateMachineStatus]
753
+ definition: Definition
754
+ roleArn: Arn
755
+ type: StateMachineType
756
+ creationDate: Timestamp
757
+ loggingConfiguration: Optional[LoggingConfiguration]
758
+ tracingConfiguration: Optional[TracingConfiguration]
759
+ label: Optional[MapRunLabel]
760
+ revisionId: Optional[RevisionId]
761
+ description: Optional[VersionDescription]
762
+ encryptionConfiguration: Optional[EncryptionConfiguration]
763
+ variableReferences: Optional[VariableReferences]
779
764
 
780
765
 
781
766
  class EvaluationFailedEventDetails(TypedDict, total=False):
@@ -987,55 +972,50 @@ class TaskFailedEventDetails(TypedDict, total=False):
987
972
  cause: Optional[SensitiveCause]
988
973
 
989
974
 
990
- HistoryEvent = TypedDict(
991
- "HistoryEvent",
992
- {
993
- "timestamp": Timestamp,
994
- "type": HistoryEventType,
995
- "id": EventId,
996
- "previousEventId": Optional[EventId],
997
- "activityFailedEventDetails": Optional[ActivityFailedEventDetails],
998
- "activityScheduleFailedEventDetails": Optional[ActivityScheduleFailedEventDetails],
999
- "activityScheduledEventDetails": Optional[ActivityScheduledEventDetails],
1000
- "activityStartedEventDetails": Optional[ActivityStartedEventDetails],
1001
- "activitySucceededEventDetails": Optional[ActivitySucceededEventDetails],
1002
- "activityTimedOutEventDetails": Optional[ActivityTimedOutEventDetails],
1003
- "taskFailedEventDetails": Optional[TaskFailedEventDetails],
1004
- "taskScheduledEventDetails": Optional[TaskScheduledEventDetails],
1005
- "taskStartFailedEventDetails": Optional[TaskStartFailedEventDetails],
1006
- "taskStartedEventDetails": Optional[TaskStartedEventDetails],
1007
- "taskSubmitFailedEventDetails": Optional[TaskSubmitFailedEventDetails],
1008
- "taskSubmittedEventDetails": Optional[TaskSubmittedEventDetails],
1009
- "taskSucceededEventDetails": Optional[TaskSucceededEventDetails],
1010
- "taskTimedOutEventDetails": Optional[TaskTimedOutEventDetails],
1011
- "executionFailedEventDetails": Optional[ExecutionFailedEventDetails],
1012
- "executionStartedEventDetails": Optional[ExecutionStartedEventDetails],
1013
- "executionSucceededEventDetails": Optional[ExecutionSucceededEventDetails],
1014
- "executionAbortedEventDetails": Optional[ExecutionAbortedEventDetails],
1015
- "executionTimedOutEventDetails": Optional[ExecutionTimedOutEventDetails],
1016
- "executionRedrivenEventDetails": Optional[ExecutionRedrivenEventDetails],
1017
- "mapStateStartedEventDetails": Optional[MapStateStartedEventDetails],
1018
- "mapIterationStartedEventDetails": Optional[MapIterationEventDetails],
1019
- "mapIterationSucceededEventDetails": Optional[MapIterationEventDetails],
1020
- "mapIterationFailedEventDetails": Optional[MapIterationEventDetails],
1021
- "mapIterationAbortedEventDetails": Optional[MapIterationEventDetails],
1022
- "lambdaFunctionFailedEventDetails": Optional[LambdaFunctionFailedEventDetails],
1023
- "lambdaFunctionScheduleFailedEventDetails": Optional[
1024
- LambdaFunctionScheduleFailedEventDetails
1025
- ],
1026
- "lambdaFunctionScheduledEventDetails": Optional[LambdaFunctionScheduledEventDetails],
1027
- "lambdaFunctionStartFailedEventDetails": Optional[LambdaFunctionStartFailedEventDetails],
1028
- "lambdaFunctionSucceededEventDetails": Optional[LambdaFunctionSucceededEventDetails],
1029
- "lambdaFunctionTimedOutEventDetails": Optional[LambdaFunctionTimedOutEventDetails],
1030
- "stateEnteredEventDetails": Optional[StateEnteredEventDetails],
1031
- "stateExitedEventDetails": Optional[StateExitedEventDetails],
1032
- "mapRunStartedEventDetails": Optional[MapRunStartedEventDetails],
1033
- "mapRunFailedEventDetails": Optional[MapRunFailedEventDetails],
1034
- "mapRunRedrivenEventDetails": Optional[MapRunRedrivenEventDetails],
1035
- "evaluationFailedEventDetails": Optional[EvaluationFailedEventDetails],
1036
- },
1037
- total=False,
1038
- )
975
+ class HistoryEvent(TypedDict, total=False):
976
+ timestamp: Timestamp
977
+ type: HistoryEventType
978
+ id: EventId
979
+ previousEventId: Optional[EventId]
980
+ activityFailedEventDetails: Optional[ActivityFailedEventDetails]
981
+ activityScheduleFailedEventDetails: Optional[ActivityScheduleFailedEventDetails]
982
+ activityScheduledEventDetails: Optional[ActivityScheduledEventDetails]
983
+ activityStartedEventDetails: Optional[ActivityStartedEventDetails]
984
+ activitySucceededEventDetails: Optional[ActivitySucceededEventDetails]
985
+ activityTimedOutEventDetails: Optional[ActivityTimedOutEventDetails]
986
+ taskFailedEventDetails: Optional[TaskFailedEventDetails]
987
+ taskScheduledEventDetails: Optional[TaskScheduledEventDetails]
988
+ taskStartFailedEventDetails: Optional[TaskStartFailedEventDetails]
989
+ taskStartedEventDetails: Optional[TaskStartedEventDetails]
990
+ taskSubmitFailedEventDetails: Optional[TaskSubmitFailedEventDetails]
991
+ taskSubmittedEventDetails: Optional[TaskSubmittedEventDetails]
992
+ taskSucceededEventDetails: Optional[TaskSucceededEventDetails]
993
+ taskTimedOutEventDetails: Optional[TaskTimedOutEventDetails]
994
+ executionFailedEventDetails: Optional[ExecutionFailedEventDetails]
995
+ executionStartedEventDetails: Optional[ExecutionStartedEventDetails]
996
+ executionSucceededEventDetails: Optional[ExecutionSucceededEventDetails]
997
+ executionAbortedEventDetails: Optional[ExecutionAbortedEventDetails]
998
+ executionTimedOutEventDetails: Optional[ExecutionTimedOutEventDetails]
999
+ executionRedrivenEventDetails: Optional[ExecutionRedrivenEventDetails]
1000
+ mapStateStartedEventDetails: Optional[MapStateStartedEventDetails]
1001
+ mapIterationStartedEventDetails: Optional[MapIterationEventDetails]
1002
+ mapIterationSucceededEventDetails: Optional[MapIterationEventDetails]
1003
+ mapIterationFailedEventDetails: Optional[MapIterationEventDetails]
1004
+ mapIterationAbortedEventDetails: Optional[MapIterationEventDetails]
1005
+ lambdaFunctionFailedEventDetails: Optional[LambdaFunctionFailedEventDetails]
1006
+ lambdaFunctionScheduleFailedEventDetails: Optional[LambdaFunctionScheduleFailedEventDetails]
1007
+ lambdaFunctionScheduledEventDetails: Optional[LambdaFunctionScheduledEventDetails]
1008
+ lambdaFunctionStartFailedEventDetails: Optional[LambdaFunctionStartFailedEventDetails]
1009
+ lambdaFunctionSucceededEventDetails: Optional[LambdaFunctionSucceededEventDetails]
1010
+ lambdaFunctionTimedOutEventDetails: Optional[LambdaFunctionTimedOutEventDetails]
1011
+ stateEnteredEventDetails: Optional[StateEnteredEventDetails]
1012
+ stateExitedEventDetails: Optional[StateExitedEventDetails]
1013
+ mapRunStartedEventDetails: Optional[MapRunStartedEventDetails]
1014
+ mapRunFailedEventDetails: Optional[MapRunFailedEventDetails]
1015
+ mapRunRedrivenEventDetails: Optional[MapRunRedrivenEventDetails]
1016
+ evaluationFailedEventDetails: Optional[EvaluationFailedEventDetails]
1017
+
1018
+
1039
1019
  HistoryEventList = List[HistoryEvent]
1040
1020
 
1041
1021
 
@@ -1162,16 +1142,13 @@ class ListStateMachinesInput(ServiceRequest):
1162
1142
  nextToken: Optional[PageToken]
1163
1143
 
1164
1144
 
1165
- StateMachineListItem = TypedDict(
1166
- "StateMachineListItem",
1167
- {
1168
- "stateMachineArn": Arn,
1169
- "name": Name,
1170
- "type": StateMachineType,
1171
- "creationDate": Timestamp,
1172
- },
1173
- total=False,
1174
- )
1145
+ class StateMachineListItem(TypedDict, total=False):
1146
+ stateMachineArn: Arn
1147
+ name: Name
1148
+ type: StateMachineType
1149
+ creationDate: Timestamp
1150
+
1151
+
1175
1152
  StateMachineList = List[StateMachineListItem]
1176
1153
 
1177
1154
 
@@ -1367,16 +1344,13 @@ class ValidateStateMachineDefinitionDiagnostic(TypedDict, total=False):
1367
1344
 
1368
1345
 
1369
1346
  ValidateStateMachineDefinitionDiagnosticList = List[ValidateStateMachineDefinitionDiagnostic]
1370
- ValidateStateMachineDefinitionInput = TypedDict(
1371
- "ValidateStateMachineDefinitionInput",
1372
- {
1373
- "definition": Definition,
1374
- "type": Optional[StateMachineType],
1375
- "severity": Optional[ValidateStateMachineDefinitionSeverity],
1376
- "maxResults": Optional[ValidateStateMachineDefinitionMaxResult],
1377
- },
1378
- total=False,
1379
- )
1347
+
1348
+
1349
+ class ValidateStateMachineDefinitionInput(TypedDict, total=False):
1350
+ definition: Definition
1351
+ type: Optional[StateMachineType]
1352
+ severity: Optional[ValidateStateMachineDefinitionSeverity]
1353
+ maxResults: Optional[ValidateStateMachineDefinitionMaxResult]
1380
1354
 
1381
1355
 
1382
1356
  class ValidateStateMachineDefinitionOutput(TypedDict, total=False):
@@ -209,15 +209,14 @@ class SupportedHour(TypedDict, total=False):
209
209
 
210
210
 
211
211
  SupportedHoursList = List[SupportedHour]
212
- CommunicationTypeOptions = TypedDict(
213
- "CommunicationTypeOptions",
214
- {
215
- "type": Optional[Type],
216
- "supportedHours": Optional[SupportedHoursList],
217
- "datesWithoutSupport": Optional[DatesWithoutSupportList],
218
- },
219
- total=False,
220
- )
212
+
213
+
214
+ class CommunicationTypeOptions(TypedDict, total=False):
215
+ type: Optional[Type]
216
+ supportedHours: Optional[SupportedHoursList]
217
+ datesWithoutSupport: Optional[DatesWithoutSupportList]
218
+
219
+
221
220
  CommunicationTypeOptionsList = List[CommunicationTypeOptions]
222
221
 
223
222
 
@@ -254,6 +254,12 @@ class PiiEntityType(StrEnum):
254
254
  ALL = "ALL"
255
255
 
256
256
 
257
+ class Pronouns(StrEnum):
258
+ HE_HIM = "HE_HIM"
259
+ SHE_HER = "SHE_HER"
260
+ THEY_THEM = "THEY_THEM"
261
+
262
+
257
263
  class RedactionOutput(StrEnum):
258
264
  redacted = "redacted"
259
265
  redacted_and_unredacted = "redacted_and_unredacted"
@@ -736,6 +742,7 @@ class MedicalScribeJob(TypedDict, total=False):
736
742
  Settings: Optional[MedicalScribeSettings]
737
743
  DataAccessRoleArn: Optional[DataAccessRoleArn]
738
744
  ChannelDefinitions: Optional[MedicalScribeChannelDefinitions]
745
+ MedicalScribeContextProvided: Optional[Boolean]
739
746
  Tags: Optional[TagList]
740
747
 
741
748
 
@@ -1097,6 +1104,14 @@ class ListVocabularyFiltersResponse(TypedDict, total=False):
1097
1104
  VocabularyFilters: Optional[VocabularyFilters]
1098
1105
 
1099
1106
 
1107
+ class MedicalScribePatientContext(TypedDict, total=False):
1108
+ Pronouns: Optional[Pronouns]
1109
+
1110
+
1111
+ class MedicalScribeContext(TypedDict, total=False):
1112
+ PatientContext: Optional[MedicalScribePatientContext]
1113
+
1114
+
1100
1115
  class StartCallAnalyticsJobRequest(ServiceRequest):
1101
1116
  CallAnalyticsJobName: CallAnalyticsJobName
1102
1117
  Media: Media
@@ -1122,6 +1137,7 @@ class StartMedicalScribeJobRequest(ServiceRequest):
1122
1137
  Settings: MedicalScribeSettings
1123
1138
  ChannelDefinitions: Optional[MedicalScribeChannelDefinitions]
1124
1139
  Tags: Optional[TagList]
1140
+ MedicalScribeContext: Optional[MedicalScribeContext]
1125
1141
 
1126
1142
 
1127
1143
  class StartMedicalScribeJobResponse(TypedDict, total=False):
@@ -1576,6 +1592,7 @@ class TranscribeApi:
1576
1592
  kms_encryption_context: KMSEncryptionContextMap | None = None,
1577
1593
  channel_definitions: MedicalScribeChannelDefinitions | None = None,
1578
1594
  tags: TagList | None = None,
1595
+ medical_scribe_context: MedicalScribeContext | None = None,
1579
1596
  **kwargs,
1580
1597
  ) -> StartMedicalScribeJobResponse:
1581
1598
  raise NotImplementedError
localstack/aws/chain.py CHANGED
@@ -5,7 +5,7 @@ The core concepts of the HandlerChain.
5
5
  from __future__ import annotations
6
6
 
7
7
  import logging
8
- from typing import Callable, Type
8
+ from collections.abc import Callable
9
9
 
10
10
  from rolo.gateway import (
11
11
  CompositeExceptionHandler,
@@ -29,7 +29,7 @@ ExceptionHandler = Callable[["HandlerChain", Exception, RequestContext, Response
29
29
  was raised by the request handler, the RequestContext, and the Response object to be populated."""
30
30
 
31
31
 
32
- HandlerChain: Type[RoloHandlerChain[RequestContext]] = RoloHandlerChain
32
+ HandlerChain: type[RoloHandlerChain[RequestContext]] = RoloHandlerChain
33
33
 
34
34
  __all__ = [
35
35
  "HandlerChain",
localstack/aws/client.py CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  import io
4
4
  import logging
5
- from datetime import datetime, timezone
6
- from typing import Dict, Iterable, Optional
5
+ from collections.abc import Iterable
6
+ from datetime import UTC, datetime
7
7
  from urllib.parse import urlsplit
8
8
 
9
9
  from botocore import awsrequest
@@ -21,6 +21,7 @@ from localstack.utils.strings import to_str
21
21
  from .api import CommonServiceException, RequestContext, ServiceException, ServiceResponse
22
22
  from .connect import get_service_endpoint
23
23
  from .gateway import Gateway
24
+ from .spec import ProtocolName
24
25
 
25
26
  LOG = logging.getLogger(__name__)
26
27
 
@@ -130,8 +131,8 @@ class _RawStream:
130
131
 
131
132
 
132
133
  def _add_modeled_error_fields(
133
- response_dict: Dict,
134
- parsed_response: Dict,
134
+ response_dict: dict,
135
+ parsed_response: dict,
135
136
  operation_model: OperationModel,
136
137
  parser: ResponseParser,
137
138
  ):
@@ -217,7 +218,7 @@ def _patch_cbor2():
217
218
  # AWS breaks the CBOR spec by using the millis (instead of seconds with floating point support for millis)
218
219
  # https://github.com/aws/aws-sdk-java-v2/issues/4661
219
220
  value = value / 1000
220
- tmp = datetime.fromtimestamp(value, timezone.utc)
221
+ tmp = datetime.fromtimestamp(value, UTC)
221
222
  except (OverflowError, OSError, ValueError) as exc:
222
223
  raise CBORDecodeValueError("error decoding datetime from epoch") from exc
223
224
 
@@ -284,13 +285,17 @@ def _patch_botocore_endpoint_in_memory():
284
285
 
285
286
 
286
287
  def parse_response(
287
- operation: OperationModel, response: Response, include_response_metadata: bool = True
288
+ operation: OperationModel,
289
+ protocol: ProtocolName,
290
+ response: Response,
291
+ include_response_metadata: bool = True,
288
292
  ) -> ServiceResponse:
289
293
  """
290
294
  Parses an HTTP Response object into an AWS response object using botocore. It does this by adapting the
291
295
  procedure of ``botocore.endpoint.convert_to_response_dict`` to work with Werkzeug's server-side response object.
292
296
 
293
297
  :param operation: the operation of the original request
298
+ :param protocol: the protocol of the original request
294
299
  :param response: the HTTP response object containing the response of the operation
295
300
  :param include_response_metadata: True if the ResponseMetadata (typical for boto response dicts) should be included
296
301
  :return: a parsed dictionary as it is returned by botocore
@@ -322,7 +327,7 @@ def parse_response(
322
327
  timestamp_parser=_cbor_timestamp_parser, blob_parser=_cbor_blob_parser
323
328
  )
324
329
 
325
- parser = factory.create_parser(operation.service_model.protocol)
330
+ parser = factory.create_parser(protocol)
326
331
  parsed_response = parser.parse(response_dict, operation.output_shape)
327
332
 
328
333
  if response.status_code >= 301:
@@ -335,9 +340,7 @@ def parse_response(
335
340
  return parsed_response
336
341
 
337
342
 
338
- def parse_service_exception(
339
- response: Response, parsed_response: Dict
340
- ) -> Optional[ServiceException]:
343
+ def parse_service_exception(response: Response, parsed_response: dict) -> ServiceException | None:
341
344
  """
342
345
  Creates a ServiceException (one ASF can handle) from a parsed response (one that botocore would return).
343
346
  It does not automatically raise the exception (see #raise_service_exception).
@@ -363,7 +366,7 @@ def parse_service_exception(
363
366
  return service_exception
364
367
 
365
368
 
366
- def raise_service_exception(response: Response, parsed_response: Dict) -> None:
369
+ def raise_service_exception(response: Response, parsed_response: dict) -> None:
367
370
  """
368
371
  Creates and raises a ServiceException from a parsed response (one that botocore would return).
369
372
  :param response: Un-parsed response