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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. localstack/aws/api/apigateway/__init__.py +87 -110
  2. localstack/aws/api/core.py +2 -3
  3. localstack/aws/api/events/__init__.py +12 -16
  4. localstack/aws/api/logs/__init__.py +5 -8
  5. localstack/aws/api/pipes/__init__.py +24 -32
  6. localstack/aws/api/scheduler/__init__.py +14 -16
  7. localstack/aws/api/stepfunctions/__init__.py +88 -114
  8. localstack/aws/api/support/__init__.py +8 -9
  9. localstack/aws/chain.py +2 -2
  10. localstack/aws/client.py +7 -9
  11. localstack/aws/connect.py +40 -39
  12. localstack/aws/forwarder.py +5 -4
  13. localstack/aws/gateway.py +1 -3
  14. localstack/aws/handlers/analytics.py +1 -2
  15. localstack/aws/handlers/cors.py +4 -5
  16. localstack/aws/handlers/logging.py +1 -2
  17. localstack/aws/handlers/metric_handler.py +3 -4
  18. localstack/aws/handlers/service.py +5 -5
  19. localstack/aws/mocking.py +15 -24
  20. localstack/aws/protocol/op_router.py +11 -10
  21. localstack/aws/protocol/parser.py +16 -17
  22. localstack/aws/protocol/serializer.py +37 -40
  23. localstack/aws/protocol/service_router.py +13 -13
  24. localstack/aws/protocol/validate.py +5 -5
  25. localstack/aws/scaffold.py +8 -9
  26. localstack/aws/serving/edge.py +5 -6
  27. localstack/aws/serving/hypercorn.py +2 -2
  28. localstack/aws/serving/twisted.py +1 -2
  29. localstack/aws/serving/werkzeug.py +2 -2
  30. localstack/aws/skeleton.py +7 -8
  31. localstack/aws/spec.py +29 -30
  32. localstack/cli/localstack.py +6 -6
  33. localstack/cli/lpm.py +2 -2
  34. localstack/config.py +14 -15
  35. localstack/deprecations.py +5 -5
  36. localstack/dev/run/__main__.py +4 -4
  37. localstack/dev/run/paths.py +5 -5
  38. localstack/dns/models.py +2 -1
  39. localstack/dns/server.py +3 -2
  40. localstack/http/dispatcher.py +1 -2
  41. localstack/http/response.py +2 -2
  42. localstack/http/router.py +1 -1
  43. localstack/http/trace.py +2 -1
  44. localstack/logging/format.py +3 -3
  45. localstack/packages/api.py +5 -5
  46. localstack/packages/core.py +3 -3
  47. localstack/packages/debugpy.py +1 -3
  48. localstack/packages/ffmpeg.py +1 -2
  49. localstack/packages/java.py +1 -2
  50. localstack/packages/terraform.py +1 -2
  51. localstack/runtime/init.py +6 -7
  52. localstack/runtime/shutdown.py +2 -1
  53. localstack/services/apigateway/exporter.py +1 -2
  54. localstack/services/apigateway/helpers.py +6 -6
  55. localstack/services/apigateway/legacy/context.py +21 -21
  56. localstack/services/apigateway/legacy/helpers.py +20 -20
  57. localstack/services/apigateway/legacy/integration.py +7 -7
  58. localstack/services/apigateway/legacy/router_asf.py +2 -2
  59. localstack/services/apigateway/legacy/templates.py +5 -5
  60. localstack/services/apigateway/models.py +16 -16
  61. localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
  62. localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
  63. localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
  64. localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
  65. localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +1 -1
  66. localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
  67. localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
  68. localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +6 -6
  69. localstack/services/apigateway/next_gen/execute_api/integrations/http.py +9 -9
  70. localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
  71. localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
  72. localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
  73. localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
  74. localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
  75. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
  76. localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
  77. localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
  78. localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
  79. localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
  80. localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
  81. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
  82. localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
  83. localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
  84. localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
  85. localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
  86. localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
  87. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
  88. localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
  89. localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +5 -5
  90. localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
  91. localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
  92. localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
  93. localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
  94. localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
  95. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
  96. localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
  97. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
  98. localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
  99. localstack/services/cdk/resource_providers/cdk_metadata.py +2 -2
  100. localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
  101. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
  102. localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
  103. localstack/services/cloudformation/cfn_utils.py +1 -1
  104. localstack/services/cloudformation/deployment_utils.py +2 -2
  105. localstack/services/cloudformation/engine/changes.py +3 -3
  106. localstack/services/cloudformation/engine/entities.py +12 -12
  107. localstack/services/cloudformation/engine/parameters.py +3 -3
  108. localstack/services/cloudformation/engine/template_deployer.py +9 -10
  109. localstack/services/cloudformation/engine/transformers.py +5 -4
  110. localstack/services/cloudformation/engine/types.py +5 -4
  111. localstack/services/cloudformation/engine/v2/change_set_model.py +31 -9
  112. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
  113. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +62 -80
  114. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +15 -14
  115. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +5 -5
  116. localstack/services/cloudformation/provider_utils.py +2 -2
  117. localstack/services/cloudformation/resource_provider.py +10 -9
  118. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
  119. localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
  120. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
  121. localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
  122. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
  123. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
  124. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
  125. localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
  126. localstack/services/cloudformation/scaffolding/__main__.py +8 -7
  127. localstack/services/cloudformation/scaffolding/propgen.py +2 -2
  128. localstack/services/cloudformation/stores.py +2 -3
  129. localstack/services/cloudformation/v2/entities.py +57 -36
  130. localstack/services/cloudformation/v2/provider.py +155 -29
  131. localstack/services/cloudwatch/alarm_scheduler.py +7 -7
  132. localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
  133. localstack/services/cloudwatch/models.py +5 -7
  134. localstack/services/cloudwatch/provider.py +12 -12
  135. localstack/services/cloudwatch/provider_v2.py +2 -4
  136. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
  137. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
  138. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
  139. localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
  140. localstack/services/dynamodb/packages.py +1 -2
  141. localstack/services/dynamodb/provider.py +7 -8
  142. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
  143. localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
  144. localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
  145. localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
  146. localstack/services/dynamodb/utils.py +13 -14
  147. localstack/services/dynamodb/v2/provider.py +6 -7
  148. localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
  149. localstack/services/dynamodbstreams/models.py +1 -3
  150. localstack/services/ec2/patches.py +4 -5
  151. localstack/services/ec2/provider.py +3 -3
  152. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
  153. localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
  154. localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
  155. localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
  156. localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
  157. localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
  158. localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
  159. localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
  160. localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
  161. localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
  162. localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
  163. localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
  164. localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
  165. localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
  166. localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
  167. localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
  168. localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
  169. localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
  170. localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
  171. localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
  172. localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
  173. localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
  174. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
  175. localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
  176. localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
  177. localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
  178. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
  179. localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
  180. localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
  181. localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
  182. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +13 -13
  183. localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
  184. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
  185. localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
  186. localstack/services/ecr/resource_providers/aws_ecr_repository.py +17 -17
  187. localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
  188. localstack/services/edge.py +5 -5
  189. localstack/services/es/provider.py +19 -19
  190. localstack/services/events/archive.py +2 -2
  191. localstack/services/events/connection.py +5 -5
  192. localstack/services/events/event_bus.py +9 -9
  193. localstack/services/events/models.py +25 -25
  194. localstack/services/events/provider.py +12 -12
  195. localstack/services/events/replay.py +3 -3
  196. localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
  197. localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
  198. localstack/services/events/resource_providers/aws_events_connection.py +27 -27
  199. localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
  200. localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
  201. localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
  202. localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
  203. localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
  204. localstack/services/events/resource_providers/aws_events_rule.py +82 -82
  205. localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
  206. localstack/services/events/rule.py +15 -15
  207. localstack/services/events/target.py +5 -5
  208. localstack/services/events/utils.py +7 -7
  209. localstack/services/events/v1/models.py +1 -3
  210. localstack/services/events/v1/provider.py +10 -10
  211. localstack/services/firehose/models.py +1 -3
  212. localstack/services/firehose/provider.py +11 -12
  213. localstack/services/iam/iam_patches.py +5 -6
  214. localstack/services/iam/provider.py +4 -4
  215. localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
  216. localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
  217. localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
  218. localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
  219. localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
  220. localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
  221. localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
  222. localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
  223. localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
  224. localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
  225. localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
  226. localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
  227. localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
  228. localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
  229. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
  230. localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
  231. localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
  232. localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
  233. localstack/services/kinesis/kinesis_mock_server.py +7 -8
  234. localstack/services/kinesis/models.py +2 -3
  235. localstack/services/kinesis/packages.py +3 -3
  236. localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
  237. localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
  238. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
  239. localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
  240. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
  241. localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
  242. localstack/services/kms/models.py +14 -17
  243. localstack/services/kms/provider.py +2 -3
  244. localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
  245. localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
  246. localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
  247. localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
  248. localstack/services/kms/utils.py +3 -2
  249. localstack/services/lambda_/api_utils.py +12 -12
  250. localstack/services/lambda_/custom_endpoints.py +2 -2
  251. localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +1 -1
  252. localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
  253. localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
  254. localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
  255. localstack/services/lambda_/invocation/assignment.py +1 -2
  256. localstack/services/lambda_/invocation/docker_runtime_executor.py +5 -4
  257. localstack/services/lambda_/invocation/execution_environment.py +4 -4
  258. localstack/services/lambda_/invocation/executor_endpoint.py +5 -5
  259. localstack/services/lambda_/invocation/internal_sqs_queue.py +1 -1
  260. localstack/services/lambda_/invocation/lambda_models.py +23 -23
  261. localstack/services/lambda_/invocation/lambda_service.py +4 -4
  262. localstack/services/lambda_/invocation/logs.py +2 -3
  263. localstack/services/lambda_/invocation/runtime_executor.py +3 -3
  264. localstack/services/lambda_/ldm.py +2 -3
  265. localstack/services/lambda_/packages.py +2 -3
  266. localstack/services/lambda_/provider.py +3 -3
  267. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
  268. localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
  269. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
  270. localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
  271. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
  272. localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
  273. localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
  274. localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
  275. localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
  276. localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
  277. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
  278. localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
  279. localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
  280. localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
  281. localstack/services/lambda_/resource_providers/aws_lambda_url.py +14 -14
  282. localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
  283. localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
  284. localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
  285. localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
  286. localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
  287. localstack/services/lambda_/runtimes.py +1 -3
  288. localstack/services/logs/models.py +1 -3
  289. localstack/services/logs/provider.py +3 -3
  290. localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
  291. localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
  292. localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
  293. localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
  294. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
  295. localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
  296. localstack/services/moto.py +3 -3
  297. localstack/services/opensearch/cluster.py +13 -13
  298. localstack/services/opensearch/cluster_manager.py +13 -14
  299. localstack/services/opensearch/models.py +1 -3
  300. localstack/services/opensearch/packages.py +1 -2
  301. localstack/services/opensearch/provider.py +7 -8
  302. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
  303. localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
  304. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
  305. localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
  306. localstack/services/opensearch/versions.py +1 -3
  307. localstack/services/plugins.py +26 -25
  308. localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
  309. localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
  310. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
  311. localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
  312. localstack/services/route53/models.py +1 -3
  313. localstack/services/route53/provider.py +1 -2
  314. localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
  315. localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
  316. localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
  317. localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
  318. localstack/services/route53resolver/models.py +8 -10
  319. localstack/services/route53resolver/provider.py +12 -12
  320. localstack/services/s3/codec.py +2 -2
  321. localstack/services/s3/cors.py +4 -4
  322. localstack/services/s3/models.py +72 -72
  323. localstack/services/s3/notifications.py +19 -19
  324. localstack/services/s3/presigned_url.py +6 -5
  325. localstack/services/s3/provider.py +13 -14
  326. localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
  327. localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
  328. localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
  329. localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
  330. localstack/services/s3/storage/core.py +4 -3
  331. localstack/services/s3/storage/ephemeral.py +7 -6
  332. localstack/services/s3/utils.py +11 -11
  333. localstack/services/s3/validation.py +1 -1
  334. localstack/services/s3/website_hosting.py +5 -5
  335. localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
  336. localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
  337. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
  338. localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
  339. localstack/services/secretsmanager/provider.py +9 -11
  340. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
  341. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
  342. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
  343. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
  344. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
  345. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
  346. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
  347. localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
  348. localstack/services/ses/provider.py +8 -8
  349. localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
  350. localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
  351. localstack/services/sns/models.py +25 -25
  352. localstack/services/sns/provider.py +1 -2
  353. localstack/services/sns/publisher.py +6 -7
  354. localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
  355. localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
  356. localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
  357. localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
  358. localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
  359. localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
  360. localstack/services/sqs/models.py +21 -22
  361. localstack/services/sqs/provider.py +19 -18
  362. localstack/services/sqs/query_api.py +2 -3
  363. localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
  364. localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
  365. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +4 -4
  366. localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
  367. localstack/services/sqs/utils.py +3 -3
  368. localstack/services/ssm/provider.py +2 -3
  369. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
  370. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
  371. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
  372. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
  373. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
  374. localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
  375. localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
  376. localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
  377. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
  378. localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
  379. localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
  380. localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
  381. localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
  382. localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
  383. localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
  384. localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
  385. localstack/services/stepfunctions/asl/component/common/path/input_path.py +3 -3
  386. localstack/services/stepfunctions/asl/component/common/path/output_path.py +3 -3
  387. localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
  388. localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
  389. localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
  390. localstack/services/stepfunctions/asl/component/common/string/string_expression.py +2 -2
  391. localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
  392. localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
  393. localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +3 -3
  394. localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +2 -2
  395. localstack/services/stepfunctions/asl/component/program/program.py +8 -8
  396. localstack/services/stepfunctions/asl/component/state/state.py +10 -11
  397. localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
  398. localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
  399. localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +1 -3
  400. localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +8 -8
  401. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +6 -6
  402. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
  403. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
  404. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
  405. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
  406. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
  407. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
  408. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
  409. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
  410. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
  411. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
  412. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
  413. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
  414. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
  415. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
  416. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
  417. localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +10 -11
  418. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
  419. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +4 -4
  420. localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +1 -2
  421. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +6 -6
  422. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
  423. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
  424. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +15 -15
  425. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +5 -4
  426. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
  427. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
  428. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
  429. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
  430. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
  431. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
  432. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
  433. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
  434. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
  435. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +2 -2
  436. localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
  437. localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +2 -4
  438. localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +3 -5
  439. localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
  440. localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
  441. localstack/services/stepfunctions/asl/eval/environment.py +15 -17
  442. localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
  443. localstack/services/stepfunctions/asl/eval/event/event_manager.py +9 -9
  444. localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
  445. localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
  446. localstack/services/stepfunctions/asl/eval/states.py +11 -11
  447. localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
  448. localstack/services/stepfunctions/asl/eval/variable_store.py +3 -3
  449. localstack/services/stepfunctions/asl/jsonata/jsonata.py +5 -4
  450. localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +1 -2
  451. localstack/services/stepfunctions/asl/parse/preprocessor.py +30 -30
  452. localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
  453. localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
  454. localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
  455. localstack/services/stepfunctions/backend/activity.py +4 -4
  456. localstack/services/stepfunctions/backend/alias.py +6 -6
  457. localstack/services/stepfunctions/backend/execution.py +25 -27
  458. localstack/services/stepfunctions/backend/execution_worker.py +7 -7
  459. localstack/services/stepfunctions/backend/state_machine.py +26 -26
  460. localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
  461. localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
  462. localstack/services/stepfunctions/mocking/mock_config.py +5 -5
  463. localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
  464. localstack/services/stepfunctions/provider.py +27 -37
  465. localstack/services/stepfunctions/quotas.py +2 -3
  466. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
  467. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
  468. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
  469. localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
  470. localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
  471. localstack/services/stores.py +7 -7
  472. localstack/services/transcribe/packages.py +1 -3
  473. localstack/services/transcribe/provider.py +2 -2
  474. localstack/state/inspect.py +4 -4
  475. localstack/state/pickle.py +16 -15
  476. localstack/testing/aws/asf_utils.py +3 -2
  477. localstack/testing/aws/lambda_utils.py +15 -14
  478. localstack/testing/aws/util.py +3 -2
  479. localstack/testing/pytest/cloudformation/fixtures.py +13 -3
  480. localstack/testing/pytest/container.py +5 -4
  481. localstack/testing/pytest/filters.py +1 -3
  482. localstack/testing/pytest/fixtures.py +11 -11
  483. localstack/testing/pytest/marking.py +6 -6
  484. localstack/testing/pytest/path_filter.py +1 -1
  485. localstack/testing/pytest/stepfunctions/utils.py +1 -1
  486. localstack/testing/pytest/validation_tracking.py +3 -3
  487. localstack/testing/scenario/provisioning.py +11 -10
  488. localstack/testing/snapshots/transformer_utility.py +2 -2
  489. localstack/testing/testselection/matching.py +2 -2
  490. localstack/testing/testselection/opt_out.py +1 -1
  491. localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
  492. localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
  493. localstack/testing/testselection/testselection.py +2 -2
  494. localstack/utils/analytics/cli.py +2 -3
  495. localstack/utils/analytics/client.py +5 -5
  496. localstack/utils/analytics/events.py +2 -2
  497. localstack/utils/analytics/metrics/registry.py +1 -1
  498. localstack/utils/analytics/publisher.py +4 -4
  499. localstack/utils/analytics/service_request_aggregator.py +3 -3
  500. localstack/utils/aws/arns.py +2 -2
  501. localstack/utils/aws/aws_responses.py +14 -21
  502. localstack/utils/aws/aws_stack.py +7 -11
  503. localstack/utils/aws/dead_letter_queue.py +3 -4
  504. localstack/utils/aws/message_forwarding.py +9 -11
  505. localstack/utils/aws/request_context.py +4 -4
  506. localstack/utils/aws/templating.py +3 -3
  507. localstack/utils/batch_policy.py +2 -2
  508. localstack/utils/bootstrap.py +19 -20
  509. localstack/utils/collections.py +16 -23
  510. localstack/utils/config_listener.py +2 -2
  511. localstack/utils/container_networking.py +3 -3
  512. localstack/utils/container_utils/container_client.py +72 -75
  513. localstack/utils/container_utils/docker_cmd_client.py +33 -33
  514. localstack/utils/container_utils/docker_sdk_client.py +35 -35
  515. localstack/utils/crypto.py +2 -3
  516. localstack/utils/diagnose.py +11 -11
  517. localstack/utils/docker_utils.py +4 -4
  518. localstack/utils/files.py +1 -2
  519. localstack/utils/functions.py +2 -2
  520. localstack/utils/http.py +6 -6
  521. localstack/utils/iputils.py +2 -1
  522. localstack/utils/json.py +1 -1
  523. localstack/utils/net.py +10 -9
  524. localstack/utils/objects.py +10 -10
  525. localstack/utils/patch.py +5 -5
  526. localstack/utils/platform.py +2 -2
  527. localstack/utils/run.py +7 -7
  528. localstack/utils/scheduler.py +3 -2
  529. localstack/utils/strings.py +2 -2
  530. localstack/utils/tagging.py +3 -3
  531. localstack/utils/testutil.py +9 -9
  532. localstack/utils/threads.py +2 -2
  533. localstack/utils/xml.py +1 -1
  534. localstack/version.py +2 -2
  535. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/METADATA +1 -1
  536. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/RECORD +544 -544
  537. localstack_core-4.7.1.dev24.dist-info/plux.json +1 -0
  538. localstack_core-4.7.1.dev22.dist-info/plux.json +0 -1
  539. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack +0 -0
  540. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack-supervisor +0 -0
  541. {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack.bat +0 -0
  542. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/WHEEL +0 -0
  543. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/entry_points.txt +0 -0
  544. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/licenses/LICENSE.txt +0 -0
  545. {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/top_level.txt +0 -0
localstack/config.py CHANGED
@@ -9,7 +9,8 @@ import tempfile
9
9
  import time
10
10
  import warnings
11
11
  from collections import defaultdict
12
- from typing import Any, Dict, List, Mapping, Optional, Tuple, TypeVar, Union
12
+ from collections.abc import Mapping
13
+ from typing import Any, Optional, TypeVar, Union
13
14
 
14
15
  from localstack import constants
15
16
  from localstack.constants import (
@@ -233,7 +234,7 @@ def is_env_not_false(env_var_name: str) -> bool:
233
234
  return os.environ.get(env_var_name, "").lower().strip() not in FALSE_STRINGS
234
235
 
235
236
 
236
- def load_environment(profiles: str = None, env=os.environ) -> List[str]:
237
+ def load_environment(profiles: str = None, env=os.environ) -> list[str]:
237
238
  """Loads the environment variables from ~/.localstack/{profile}.env, for each profile listed in the profiles.
238
239
  :param env: environment to load profile to. Defaults to `os.environ`
239
240
  :param profiles: a comma separated list of profiles to load (defaults to "default")
@@ -337,7 +338,7 @@ def in_docker():
337
338
  return False
338
339
  except Exception:
339
340
  pass
340
- with open("/proc/1/cgroup", "rt") as ifh:
341
+ with open("/proc/1/cgroup") as ifh:
341
342
  content = ifh.read()
342
343
  if "docker" in content or "buildkit" in content:
343
344
  return True
@@ -348,7 +349,7 @@ def in_docker():
348
349
  # containerd does not set any specific file or config, but it does use
349
350
  # io.containerd.snapshotter.v1.overlayfs as the overlay filesystem for `/`.
350
351
  try:
351
- with open("/proc/mounts", "rt") as infile:
352
+ with open("/proc/mounts") as infile:
352
353
  for line in infile:
353
354
  line = line.strip()
354
355
 
@@ -603,9 +604,7 @@ class HostAndPort:
603
604
 
604
605
  def _get_unprivileged_port_range_start(self) -> int:
605
606
  try:
606
- with open(
607
- "/proc/sys/net/ipv4/ip_unprivileged_port_start", "rt"
608
- ) as unprivileged_port_start:
607
+ with open("/proc/sys/net/ipv4/ip_unprivileged_port_start") as unprivileged_port_start:
609
608
  port = unprivileged_port_start.read()
610
609
  return int(port.strip())
611
610
  except Exception:
@@ -637,7 +636,7 @@ class HostAndPort:
637
636
  return f"HostAndPort(host={self.host}, port={self.port})"
638
637
 
639
638
 
640
- class UniqueHostAndPortList(List[HostAndPort]):
639
+ class UniqueHostAndPortList(list[HostAndPort]):
641
640
  """
642
641
  Container type that ensures that ports added to the list are unique based
643
642
  on these rules:
@@ -650,7 +649,7 @@ class UniqueHostAndPortList(List[HostAndPort]):
650
649
  - Identical identical hosts and ports are de-duped
651
650
  """
652
651
 
653
- def __init__(self, iterable: Union[List[HostAndPort], None] = None):
652
+ def __init__(self, iterable: Union[list[HostAndPort], None] = None):
654
653
  super().__init__(iterable or [])
655
654
  self._ensure_unique()
656
655
 
@@ -661,10 +660,10 @@ class UniqueHostAndPortList(List[HostAndPort]):
661
660
  if len(self) <= 1:
662
661
  return
663
662
 
664
- unique: List[HostAndPort] = list()
663
+ unique: list[HostAndPort] = list()
665
664
 
666
665
  # Build a dictionary of hosts by port
667
- hosts_by_port: Dict[int, List[str]] = defaultdict(list)
666
+ hosts_by_port: dict[int, list[str]] = defaultdict(list)
668
667
  for item in self:
669
668
  hosts_by_port[item.port].append(item.host)
670
669
 
@@ -696,7 +695,7 @@ class UniqueHostAndPortList(List[HostAndPort]):
696
695
 
697
696
  def populate_edge_configuration(
698
697
  environment: Mapping[str, str],
699
- ) -> Tuple[HostAndPort, UniqueHostAndPortList]:
698
+ ) -> tuple[HostAndPort, UniqueHostAndPortList]:
700
699
  """Populate the LocalStack edge configuration from environment variables."""
701
700
  localstack_host_raw = environment.get("LOCALSTACK_HOST")
702
701
  gateway_listen_raw = environment.get("GATEWAY_LISTEN")
@@ -1448,7 +1447,7 @@ def is_collect_metrics_mode() -> bool:
1448
1447
  return is_env_true(ENV_INTERNAL_TEST_COLLECT_METRIC)
1449
1448
 
1450
1449
 
1451
- def collect_config_items() -> List[Tuple[str, Any]]:
1450
+ def collect_config_items() -> list[tuple[str, Any]]:
1452
1451
  """Returns a list of key-value tuples of LocalStack configuration values."""
1453
1452
  none = object() # sentinel object
1454
1453
 
@@ -1598,7 +1597,7 @@ def get_edge_url(localstack_hostname=None, protocol=None):
1598
1597
 
1599
1598
 
1600
1599
  class ServiceProviderConfig(Mapping[str, str]):
1601
- _provider_config: Dict[str, str]
1600
+ _provider_config: dict[str, str]
1602
1601
  default_value: str
1603
1602
  override_prefix: str = "PROVIDER_OVERRIDE_"
1604
1603
 
@@ -1623,7 +1622,7 @@ class ServiceProviderConfig(Mapping[str, str]):
1623
1622
  def set_provider(self, service: str, provider: str):
1624
1623
  self._provider_config[service] = provider
1625
1624
 
1626
- def bulk_set_provider_if_not_exists(self, services: List[str], provider: str):
1625
+ def bulk_set_provider_if_not_exists(self, services: list[str], provider: str):
1627
1626
  for service in services:
1628
1627
  self.set_provider_if_not_exists(service, provider)
1629
1628
 
@@ -1,8 +1,8 @@
1
1
  # A simple module to track deprecations over time / versions, and some simple functions guiding the affected users.
2
2
  import logging
3
3
  import os
4
+ from collections.abc import Callable
4
5
  from dataclasses import dataclass
5
- from typing import Callable, List, Optional
6
6
 
7
7
  from localstack.utils.analytics import log
8
8
 
@@ -329,8 +329,8 @@ DEPRECATIONS = [
329
329
 
330
330
 
331
331
  def collect_affected_deprecations(
332
- deprecations: Optional[List[EnvVarDeprecation]] = None,
333
- ) -> List[EnvVarDeprecation]:
332
+ deprecations: list[EnvVarDeprecation] | None = None,
333
+ ) -> list[EnvVarDeprecation]:
334
334
  """
335
335
  Collects all deprecations which are used in the OS environ.
336
336
  :param deprecations: List of deprecations to check. Uses DEPRECATIONS list by default.
@@ -341,7 +341,7 @@ def collect_affected_deprecations(
341
341
  return [deprecation for deprecation in deprecations if deprecation.is_affected]
342
342
 
343
343
 
344
- def log_env_warning(deprecations: List[EnvVarDeprecation]) -> None:
344
+ def log_env_warning(deprecations: list[EnvVarDeprecation]) -> None:
345
345
  """
346
346
  Logs warnings for the given deprecations.
347
347
  :param deprecations: list of affected deprecations to show a warning for
@@ -368,7 +368,7 @@ def log_env_warning(deprecations: List[EnvVarDeprecation]) -> None:
368
368
  log.event(event="deprecated_env_usage", payload={"deprecated_env_vars": env_vars})
369
369
 
370
370
 
371
- def log_deprecation_warnings(deprecations: Optional[List[EnvVarDeprecation]] = None) -> None:
371
+ def log_deprecation_warnings(deprecations: list[EnvVarDeprecation] | None = None) -> None:
372
372
  affected_deprecations = collect_affected_deprecations(deprecations)
373
373
  log_env_warning(affected_deprecations)
374
374
 
@@ -1,6 +1,6 @@
1
1
  import dataclasses
2
2
  import os
3
- from typing import Iterable, Tuple
3
+ from collections.abc import Iterable
4
4
 
5
5
  import click
6
6
  from rich.rule import Rule
@@ -133,9 +133,9 @@ def run(
133
133
  mount_dependencies: bool = False,
134
134
  mount_entrypoints: bool = False,
135
135
  mount_docker_socket: bool = True,
136
- env: Tuple = (),
137
- volume: Tuple = (),
138
- publish: Tuple = (),
136
+ env: tuple = (),
137
+ volume: tuple = (),
138
+ publish: tuple = (),
139
139
  entrypoint: str = None,
140
140
  network: str = None,
141
141
  local_packages: list[str] | None = None,
@@ -1,8 +1,8 @@
1
1
  """Utilities to resolve important paths on the host and in the container."""
2
2
 
3
3
  import os
4
+ from collections.abc import Callable
4
5
  from pathlib import Path
5
- from typing import Callable, Optional, Union
6
6
 
7
7
 
8
8
  class HostPaths:
@@ -20,9 +20,9 @@ class HostPaths:
20
20
 
21
21
  def __init__(
22
22
  self,
23
- workspace_dir: Union[os.PathLike, str] = None,
24
- volume_dir: Union[os.PathLike, str] = None,
25
- venv_dir: Union[os.PathLike, str] = None,
23
+ workspace_dir: os.PathLike | str = None,
24
+ volume_dir: os.PathLike | str = None,
25
+ venv_dir: os.PathLike | str = None,
26
26
  ):
27
27
  self.workspace_dir = Path(workspace_dir or os.path.abspath(os.path.join(os.getcwd(), "..")))
28
28
  self.localstack_project_dir = self.workspace_dir / "localstack"
@@ -72,7 +72,7 @@ class ContainerPaths:
72
72
  docker_entrypoint: str = "/usr/local/bin/docker-entrypoint.sh"
73
73
  localstack_supervisor: str = "/usr/local/bin/localstack-supervisor"
74
74
  localstack_source_dir: str
75
- localstack_pro_source_dir: Optional[str]
75
+ localstack_pro_source_dir: str | None
76
76
 
77
77
  def dependency_source(self, name: str) -> str:
78
78
  """Returns path of the given source dependency in the site-packages directory."""
localstack/dns/models.py CHANGED
@@ -1,6 +1,7 @@
1
1
  import dataclasses
2
+ from collections.abc import Callable
2
3
  from enum import Enum, auto
3
- from typing import Callable, Protocol
4
+ from typing import Protocol
4
5
 
5
6
 
6
7
  class RecordType(Enum):
localstack/dns/server.py CHANGED
@@ -5,12 +5,13 @@ import os
5
5
  import re
6
6
  import textwrap
7
7
  import threading
8
+ from collections.abc import Iterable
8
9
  from datetime import datetime
9
10
  from functools import cache
10
11
  from ipaddress import IPv4Address, IPv4Interface
11
12
  from pathlib import Path
12
13
  from socket import AddressFamily
13
- from typing import Iterable, Literal, Tuple
14
+ from typing import Literal
14
15
 
15
16
  import psutil
16
17
  from cachetools import TTLCache, cached
@@ -90,7 +91,7 @@ THREAD_LOCAL = threading.local()
90
91
 
91
92
  # Type of the value given by DNSHandler.client_address
92
93
  # in the form (ip, port) e.g. ("127.0.0.1", 58291)
93
- ClientAddress = Tuple[str, int]
94
+ ClientAddress = tuple[str, int]
94
95
 
95
96
  psutil_cache = TTLCache(maxsize=100, ttl=10)
96
97
 
@@ -1,5 +1,4 @@
1
1
  from json import JSONEncoder
2
- from typing import Type
3
2
 
4
3
  from rolo.routing.handler import Handler, ResultValue
5
4
  from rolo.routing.handler import handler_dispatcher as _handler_dispatcher
@@ -14,7 +13,7 @@ __all__ = [
14
13
  ]
15
14
 
16
15
 
17
- def handler_dispatcher(json_encoder: Type[JSONEncoder] = None) -> Dispatcher[Handler]:
16
+ def handler_dispatcher(json_encoder: type[JSONEncoder] = None) -> Dispatcher[Handler]:
18
17
  """
19
18
  Replacement for ``rolo.dispatcher.handler_dispatcher`` that uses by default LocalStack's CustomEncoder for
20
19
  serializing JSON documents.
@@ -1,5 +1,5 @@
1
1
  from json import JSONEncoder
2
- from typing import Any, Type
2
+ from typing import Any
3
3
 
4
4
  from rolo import Response as RoloResponse
5
5
 
@@ -11,7 +11,7 @@ class Response(RoloResponse):
11
11
  An HTTP Response object, which simply extends werkzeug's Response object with a few convenience methods.
12
12
  """
13
13
 
14
- def set_json(self, doc: Any, cls: Type[JSONEncoder] = CustomEncoder):
14
+ def set_json(self, doc: Any, cls: type[JSONEncoder] = CustomEncoder):
15
15
  """
16
16
  Serializes the given dictionary using localstack's ``CustomEncoder`` into a json response, and sets the
17
17
  mimetype automatically to ``application/json``.
localstack/http/router.py CHANGED
@@ -1,6 +1,6 @@
1
+ from collections.abc import Mapping
1
2
  from typing import (
2
3
  Any,
3
- Mapping,
4
4
  TypeVar,
5
5
  )
6
6
 
localstack/http/trace.py CHANGED
@@ -2,7 +2,8 @@ import dataclasses
2
2
  import inspect
3
3
  import logging
4
4
  import time
5
- from typing import Any, Callable
5
+ from collections.abc import Callable
6
+ from typing import Any
6
7
 
7
8
  from rolo import Response
8
9
  from rolo.gateway import ExceptionHandler, Handler, HandlerChain, RequestContext
@@ -3,7 +3,7 @@
3
3
  import logging
4
4
  import re
5
5
  from functools import lru_cache
6
- from typing import Any, Dict
6
+ from typing import Any
7
7
 
8
8
  from localstack.utils.numbers import format_bytes
9
9
  from localstack.utils.strings import to_bytes
@@ -173,8 +173,8 @@ class AwsTraceLoggingFormatter(TraceLoggingFormatter):
173
173
  def __init__(self):
174
174
  super().__init__()
175
175
 
176
- def _copy_service_dict(self, service_dict: Dict) -> Dict:
177
- if not isinstance(service_dict, Dict):
176
+ def _copy_service_dict(self, service_dict: dict) -> dict:
177
+ if not isinstance(service_dict, dict):
178
178
  return service_dict
179
179
  result = {}
180
180
  for key, value in service_dict.items():
@@ -6,7 +6,7 @@ from collections import defaultdict
6
6
  from enum import Enum
7
7
  from inspect import getmodule
8
8
  from threading import RLock
9
- from typing import Any, Callable, Generic, List, Optional, ParamSpec, TypeVar
9
+ from typing import Any, Callable, Generic, Optional, ParamSpec, TypeVar
10
10
 
11
11
  from plux import Plugin, PluginManager, PluginSpec # type: ignore
12
12
 
@@ -219,7 +219,7 @@ class Package(abc.ABC, Generic[T]):
219
219
  """
220
220
  self.get_installer(version).install(target)
221
221
 
222
- @functools.lru_cache()
222
+ @functools.lru_cache
223
223
  def get_installer(self, version: str | None = None) -> T:
224
224
  """
225
225
  Returns the installer instance for a specific version of the package.
@@ -237,7 +237,7 @@ class Package(abc.ABC, Generic[T]):
237
237
  raise NoSuchVersionException(package=self.name, version=version)
238
238
  return self._get_installer(version)
239
239
 
240
- def get_versions(self) -> List[str]:
240
+ def get_versions(self) -> list[str]:
241
241
  """
242
242
  :return: List of all versions available for this package.
243
243
  """
@@ -262,7 +262,7 @@ class MultiPackageInstaller(PackageInstaller):
262
262
  PackageInstaller implementation which composes of multiple package installers.
263
263
  """
264
264
 
265
- def __init__(self, name: str, version: str, package_installer: List[PackageInstaller]):
265
+ def __init__(self, name: str, version: str, package_installer: list[PackageInstaller]):
266
266
  """
267
267
  :param name: of the (multi-)package installer
268
268
  :param version: of this (multi-)package installer
@@ -317,7 +317,7 @@ class PackagesPlugin(Plugin): # type: ignore[misc]
317
317
  self,
318
318
  name: str,
319
319
  scope: str,
320
- get_package: Callable[[], Package[PackageInstaller] | List[Package[PackageInstaller]]],
320
+ get_package: Callable[[], Package[PackageInstaller] | list[Package[PackageInstaller]]],
321
321
  should_load: Callable[[], bool] | None = None,
322
322
  ) -> None:
323
323
  super().__init__()
@@ -4,7 +4,7 @@ import re
4
4
  from abc import ABC
5
5
  from functools import lru_cache
6
6
  from sys import version_info
7
- from typing import Any, Optional, Tuple
7
+ from typing import Any, Optional
8
8
 
9
9
  import requests
10
10
 
@@ -190,7 +190,7 @@ class GitHubReleaseInstaller(PermissionDownloadInstaller):
190
190
  f"https://api.github.com/repos/{github_slug}/releases/tags/{self.version}"
191
191
  )
192
192
 
193
- @lru_cache()
193
+ @lru_cache
194
194
  def _get_download_url(self) -> str:
195
195
  asset_name = self._get_github_asset_name()
196
196
  # try to use a token when calling the GH API for increased API rate limits
@@ -404,7 +404,7 @@ class MavenPackageInstaller(MavenDownloadInstaller):
404
404
  super()._install(target)
405
405
 
406
406
 
407
- def parse_maven_package_url(package_url: str) -> Tuple[str, str, str]:
407
+ def parse_maven_package_url(package_url: str) -> tuple[str, str, str]:
408
408
  """Example: parse_maven_package_url("pkg:maven/software.amazon.event.ruler/event-ruler@1.7.3")
409
409
  -> software.amazon.event.ruler, event-ruler, 1.7.3
410
410
  """
@@ -1,5 +1,3 @@
1
- from typing import List
2
-
3
1
  from localstack.packages import InstallTarget, Package, PackageInstaller
4
2
  from localstack.utils.run import run
5
3
 
@@ -8,7 +6,7 @@ class DebugPyPackage(Package["DebugPyPackageInstaller"]):
8
6
  def __init__(self) -> None:
9
7
  super().__init__("DebugPy", "latest")
10
8
 
11
- def get_versions(self) -> List[str]:
9
+ def get_versions(self) -> list[str]:
12
10
  return ["latest"]
13
11
 
14
12
  def _get_installer(self, version: str) -> "DebugPyPackageInstaller":
@@ -1,5 +1,4 @@
1
1
  import os
2
- from typing import List
3
2
 
4
3
  from localstack.packages import Package
5
4
  from localstack.packages.core import ArchiveDownloadAndExtractInstaller
@@ -21,7 +20,7 @@ class FfmpegPackage(Package["FfmpegPackageInstaller"]):
21
20
  def _get_installer(self, version: str) -> "FfmpegPackageInstaller":
22
21
  return FfmpegPackageInstaller(version)
23
22
 
24
- def get_versions(self) -> List[str]:
23
+ def get_versions(self) -> list[str]:
25
24
  return ["7.1"]
26
25
 
27
26
 
@@ -1,6 +1,5 @@
1
1
  import logging
2
2
  import os
3
- from typing import List
4
3
 
5
4
  import requests
6
5
 
@@ -198,7 +197,7 @@ class JavaPackage(Package[JavaPackageInstaller]):
198
197
  def __init__(self, default_version: str = DEFAULT_JAVA_VERSION):
199
198
  super().__init__(name="Java", default_version=default_version)
200
199
 
201
- def get_versions(self) -> List[str]:
200
+ def get_versions(self) -> list[str]:
202
201
  return list(JAVA_VERSIONS.keys())
203
202
 
204
203
  def _get_installer(self, version: str) -> JavaPackageInstaller:
@@ -1,6 +1,5 @@
1
1
  import os
2
2
  import platform
3
- from typing import List
4
3
 
5
4
  from localstack.packages import InstallTarget, Package
6
5
  from localstack.packages.core import ArchiveDownloadAndExtractInstaller
@@ -20,7 +19,7 @@ class TerraformPackage(Package["TerraformPackageInstaller"]):
20
19
  def __init__(self) -> None:
21
20
  super().__init__("Terraform", TERRAFORM_VERSION)
22
21
 
23
- def get_versions(self) -> List[str]:
22
+ def get_versions(self) -> list[str]:
24
23
  return [TERRAFORM_VERSION]
25
24
 
26
25
  def _get_installer(self, version: str) -> "TerraformPackageInstaller":
@@ -7,7 +7,6 @@ import subprocess
7
7
  import time
8
8
  from enum import Enum
9
9
  from functools import cached_property
10
- from typing import Dict, List, Optional
11
10
 
12
11
  from plux import Plugin, PluginManager
13
12
 
@@ -109,7 +108,7 @@ class PythonScriptRunner(ScriptRunner):
109
108
 
110
109
 
111
110
  class InitScriptManager:
112
- _stage_directories: Dict[Stage, str] = {
111
+ _stage_directories: dict[Stage, str] = {
113
112
  Stage.BOOT: "boot.d",
114
113
  Stage.START: "start.d",
115
114
  Stage.READY: "ready.d",
@@ -117,7 +116,7 @@ class InitScriptManager:
117
116
  }
118
117
 
119
118
  script_root: str
120
- stage_completed: Dict[Stage, bool]
119
+ stage_completed: dict[Stage, bool]
121
120
 
122
121
  def __init__(self, script_root: str):
123
122
  self.script_root = script_root
@@ -125,10 +124,10 @@ class InitScriptManager:
125
124
  self.runner_manager: PluginManager[ScriptRunner] = PluginManager(ScriptRunner.namespace)
126
125
 
127
126
  @cached_property
128
- def scripts(self) -> Dict[Stage, List[Script]]:
127
+ def scripts(self) -> dict[Stage, list[Script]]:
129
128
  return self._find_scripts()
130
129
 
131
- def get_script_runner(self, script_file: str) -> Optional[ScriptRunner]:
130
+ def get_script_runner(self, script_file: str) -> ScriptRunner | None:
132
131
  runners = self.runner_manager.load_all()
133
132
  for runner in runners:
134
133
  if runner.should_run(script_file):
@@ -138,7 +137,7 @@ class InitScriptManager:
138
137
  def has_script_runner(self, script_file: str) -> bool:
139
138
  return self.get_script_runner(script_file) is not None
140
139
 
141
- def run_stage(self, stage: Stage) -> List[Script]:
140
+ def run_stage(self, stage: Stage) -> list[Script]:
142
141
  """
143
142
  Runs all scripts in the given stage.
144
143
 
@@ -188,7 +187,7 @@ class InitScriptManager:
188
187
 
189
188
  return scripts
190
189
 
191
- def _find_scripts(self) -> Dict[Stage, List[Script]]:
190
+ def _find_scripts(self) -> dict[Stage, list[Script]]:
192
191
  scripts = {}
193
192
 
194
193
  if self.script_root is None:
@@ -1,5 +1,6 @@
1
1
  import logging
2
- from typing import Any, Callable
2
+ from collections.abc import Callable
3
+ from typing import Any
3
4
 
4
5
  from localstack.runtime import hooks
5
6
  from localstack.utils.functions import call_safe
@@ -1,6 +1,5 @@
1
1
  import abc
2
2
  import json
3
- from typing import Type
4
3
 
5
4
  from apispec import APISpec
6
5
 
@@ -320,7 +319,7 @@ class _OpenApiOAS30Exporter(_BaseOpenApiExporter):
320
319
 
321
320
 
322
321
  class OpenApiExporter:
323
- exporters: dict[str, Type[_BaseOpenApiExporter]]
322
+ exporters: dict[str, type[_BaseOpenApiExporter]]
324
323
 
325
324
  def __init__(self):
326
325
  self.exporters = {"swagger": _OpenApiSwaggerExporter, "oas30": _OpenApiOAS30Exporter}
@@ -3,7 +3,7 @@ import copy
3
3
  import hashlib
4
4
  import json
5
5
  import logging
6
- from typing import List, Optional, TypedDict, Union
6
+ from typing import TypedDict
7
7
  from urllib import parse as urlparse
8
8
 
9
9
  from jsonpatch import apply_patch
@@ -93,7 +93,7 @@ class OpenAPIExt:
93
93
 
94
94
  class AuthorizerConfig(TypedDict):
95
95
  authorizer: Authorizer
96
- authorization_scopes: Optional[list[str]]
96
+ authorization_scopes: list[str] | None
97
97
 
98
98
 
99
99
  # TODO: make the CRUD operations in this file generic for the different model types (authorizes, validators, ...)
@@ -198,11 +198,11 @@ class OpenAPISpecificationResolver:
198
198
 
199
199
  return cur
200
200
 
201
- def _namespaced_resolution(self, namespace: str, data: Union[dict, list]) -> Union[dict, list]:
201
+ def _namespaced_resolution(self, namespace: str, data: dict | list) -> dict | list:
202
202
  with self._pathctx(namespace):
203
203
  return self._resolve_references(data)
204
204
 
205
- def _resolve_references(self, data) -> Union[dict, list]:
205
+ def _resolve_references(self, data) -> dict | list:
206
206
  if self._is_ref(data):
207
207
  return self._resolve_refpath(data["$ref"])
208
208
 
@@ -578,7 +578,7 @@ def import_api_from_openapi_spec(
578
578
 
579
579
  authorizers[security_scheme_name] = authorizer
580
580
 
581
- def get_authorizer(path_payload: dict) -> Optional[AuthorizerConfig]:
581
+ def get_authorizer(path_payload: dict) -> AuthorizerConfig | None:
582
582
  if not (security_schemes := path_payload.get("security")):
583
583
  return None
584
584
 
@@ -605,7 +605,7 @@ def import_api_from_openapi_spec(
605
605
  rel_path = abs_path.removeprefix(base_path)
606
606
  return add_path_methods(rel_path, parts, parent_id=parent_id)
607
607
 
608
- def add_path_methods(rel_path: str, parts: List[str], parent_id=""):
608
+ def add_path_methods(rel_path: str, parts: list[str], parent_id=""):
609
609
  rel_path = rel_path or "/"
610
610
  child_id = ApigwResourceIdentifier(account_id, region_name, parent_id, rel_path).generate()
611
611