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
@@ -13,13 +13,10 @@ from enum import Enum, unique
13
13
  from pathlib import Path
14
14
  from typing import (
15
15
  Callable,
16
- Dict,
17
- List,
18
16
  Literal,
19
17
  NamedTuple,
20
18
  Optional,
21
19
  Protocol,
22
- Tuple,
23
20
  TypedDict,
24
21
  Union,
25
22
  get_args,
@@ -157,7 +154,7 @@ class Ulimit:
157
154
 
158
155
 
159
156
  # defines the type for port mappings (source->target port range)
160
- PortRange = Union[List, HashableList]
157
+ PortRange = Union[list, HashableList]
161
158
  # defines the protocol for a port range ("tcp" or "udp")
162
159
  PortProtocol = str
163
160
 
@@ -176,7 +173,7 @@ class PortMappings:
176
173
  # bind host to be used for defining port mappings
177
174
  bind_host: str
178
175
  # maps `from` port range to `to` port range for port mappings
179
- mappings: Dict[Tuple[PortRange, PortProtocol], List]
176
+ mappings: dict[tuple[PortRange, PortProtocol], list]
180
177
 
181
178
  def __init__(self, bind_host: str = None):
182
179
  self.bind_host = bind_host if bind_host else ""
@@ -253,7 +250,7 @@ class PortMappings:
253
250
 
254
251
  return " ".join([entry(k, v) for k, v in self.mappings.items()])
255
252
 
256
- def to_list(self) -> List[str]: # TODO test
253
+ def to_list(self) -> list[str]: # TODO test
257
254
  bind_address = f"{self.bind_host}:" if self.bind_host else ""
258
255
 
259
256
  def entry(k, v):
@@ -269,7 +266,7 @@ class PortMappings:
269
266
 
270
267
  return [item for k, v in self.mappings.items() for item in entry(k, v)]
271
268
 
272
- def to_dict(self) -> Dict[str, Union[Tuple[str, Union[int, List[int]]], int]]:
269
+ def to_dict(self) -> dict[str, Union[tuple[str, Union[int, list[int]]], int]]:
273
270
  bind_address = self.bind_host or ""
274
271
 
275
272
  def bind_port(bind_address, host_port):
@@ -367,7 +364,7 @@ class PortMappings:
367
364
  return f"<PortMappings: {self.to_dict()}>"
368
365
 
369
366
 
370
- SimpleVolumeBind = Tuple[str, str]
367
+ SimpleVolumeBind = tuple[str, str]
371
368
  """Type alias for a simple version of VolumeBind"""
372
369
 
373
370
 
@@ -455,9 +452,9 @@ class VolumeDirMount:
455
452
 
456
453
 
457
454
  class VolumeMappings:
458
- mappings: List[Union[SimpleVolumeBind, BindMount]]
455
+ mappings: list[Union[SimpleVolumeBind, BindMount]]
459
456
 
460
- def __init__(self, mappings: List[Union[SimpleVolumeBind, BindMount, VolumeDirMount]] = None):
457
+ def __init__(self, mappings: list[Union[SimpleVolumeBind, BindMount, VolumeDirMount]] = None):
461
458
  self.mappings = mappings if mappings is not None else []
462
459
 
463
460
  def add(self, mapping: Union[SimpleVolumeBind, BindMount, VolumeDirMount]):
@@ -521,7 +518,7 @@ class VolumeInfo(NamedTuple):
521
518
  @dataclasses.dataclass
522
519
  class LogConfig:
523
520
  type: Literal["json-file", "syslog", "journald", "gelf", "fluentd", "none", "awslogs", "splunk"]
524
- config: Dict[str, str] = dataclasses.field(default_factory=dict)
521
+ config: dict[str, str] = dataclasses.field(default_factory=dict)
525
522
 
526
523
 
527
524
  @dataclasses.dataclass
@@ -530,11 +527,11 @@ class ContainerConfiguration:
530
527
  name: Optional[str] = None
531
528
  volumes: VolumeMappings = dataclasses.field(default_factory=VolumeMappings)
532
529
  ports: PortMappings = dataclasses.field(default_factory=PortMappings)
533
- exposed_ports: List[str] = dataclasses.field(default_factory=list)
534
- entrypoint: Optional[Union[List[str], str]] = None
530
+ exposed_ports: list[str] = dataclasses.field(default_factory=list)
531
+ entrypoint: Optional[Union[list[str], str]] = None
535
532
  additional_flags: Optional[str] = None
536
- command: Optional[List[str]] = None
537
- env_vars: Dict[str, str] = dataclasses.field(default_factory=dict)
533
+ command: Optional[list[str]] = None
534
+ env_vars: dict[str, str] = dataclasses.field(default_factory=dict)
538
535
 
539
536
  privileged: bool = False
540
537
  remove: bool = False
@@ -544,15 +541,15 @@ class ContainerConfiguration:
544
541
 
545
542
  stdin: Optional[str] = None
546
543
  user: Optional[str] = None
547
- cap_add: Optional[List[str]] = None
548
- cap_drop: Optional[List[str]] = None
549
- security_opt: Optional[List[str]] = None
544
+ cap_add: Optional[list[str]] = None
545
+ cap_drop: Optional[list[str]] = None
546
+ security_opt: Optional[list[str]] = None
550
547
  network: Optional[str] = None
551
548
  dns: Optional[str] = None
552
549
  workdir: Optional[str] = None
553
550
  platform: Optional[str] = None
554
- ulimits: Optional[List[Ulimit]] = None
555
- labels: Optional[Dict[str, str]] = None
551
+ ulimits: Optional[list[Ulimit]] = None
552
+ labels: Optional[dict[str, str]] = None
556
553
  init: Optional[bool] = None
557
554
  log_config: Optional[LogConfig] = None
558
555
 
@@ -577,17 +574,17 @@ class DockerRunFlags:
577
574
  create: https://docs.docker.com/engine/reference/commandline/create/
578
575
  """
579
576
 
580
- env_vars: Optional[Dict[str, str]]
581
- extra_hosts: Optional[Dict[str, str]]
582
- labels: Optional[Dict[str, str]]
583
- volumes: Optional[List[SimpleVolumeBind]]
577
+ env_vars: Optional[dict[str, str]]
578
+ extra_hosts: Optional[dict[str, str]]
579
+ labels: Optional[dict[str, str]]
580
+ volumes: Optional[list[SimpleVolumeBind]]
584
581
  network: Optional[str]
585
582
  platform: Optional[DockerPlatform]
586
583
  privileged: Optional[bool]
587
584
  ports: Optional[PortMappings]
588
- ulimits: Optional[List[Ulimit]]
585
+ ulimits: Optional[list[Ulimit]]
589
586
  user: Optional[str]
590
- dns: Optional[List[str]]
587
+ dns: Optional[list[str]]
591
588
 
592
589
 
593
590
  class RegistryResolverStrategy(Protocol):
@@ -621,7 +618,7 @@ class ContainerClient(metaclass=ABCMeta):
621
618
  """Returns the usage statistics of the container with the given name"""
622
619
  pass
623
620
 
624
- def get_networks(self, container_name: str) -> List[str]:
621
+ def get_networks(self, container_name: str) -> list[str]:
625
622
  LOG.debug("Getting networks for container: %s", container_name)
626
623
  container_attrs = self.inspect_container(container_name_or_id=container_name)
627
624
  return list(container_attrs["NetworkSettings"].get("Networks", {}).keys())
@@ -701,13 +698,13 @@ class ContainerClient(metaclass=ABCMeta):
701
698
  """
702
699
 
703
700
  @abstractmethod
704
- def list_containers(self, filter: Union[List[str], str, None] = None, all=True) -> List[dict]:
701
+ def list_containers(self, filter: Union[list[str], str, None] = None, all=True) -> list[dict]:
705
702
  """List all containers matching the given filters
706
703
 
707
704
  :return: A list of dicts with keys id, image, name, labels, status
708
705
  """
709
706
 
710
- def get_running_container_names(self) -> List[str]:
707
+ def get_running_container_names(self) -> list[str]:
711
708
  """Returns a list of the names of all running containers"""
712
709
  result = self.list_containers(all=False)
713
710
  result = [container["name"] for container in result]
@@ -798,7 +795,7 @@ class ContainerClient(metaclass=ABCMeta):
798
795
  strip_latest: bool = True,
799
796
  include_tags: bool = True,
800
797
  strip_wellknown_repo_prefixes: bool = True,
801
- ) -> List[str]:
798
+ ) -> list[str]:
802
799
  """
803
800
  Get all names of docker images available to the container engine
804
801
  :param strip_latest: return images both with and without :latest tag
@@ -817,13 +814,13 @@ class ContainerClient(metaclass=ABCMeta):
817
814
  """Returns a blocking generator you can iterate over to retrieve log output as it happens."""
818
815
 
819
816
  @abstractmethod
820
- def inspect_container(self, container_name_or_id: str) -> Dict[str, Union[Dict, str]]:
817
+ def inspect_container(self, container_name_or_id: str) -> dict[str, Union[dict, str]]:
821
818
  """Get detailed attributes of a container.
822
819
 
823
820
  :return: Dict containing docker attributes as returned by the daemon
824
821
  """
825
822
 
826
- def inspect_container_volumes(self, container_name_or_id) -> List[VolumeInfo]:
823
+ def inspect_container_volumes(self, container_name_or_id) -> list[VolumeInfo]:
827
824
  """Return information about the volumes mounted into the given container.
828
825
 
829
826
  :param container_name_or_id: the container name or id
@@ -838,7 +835,7 @@ class ContainerClient(metaclass=ABCMeta):
838
835
  @abstractmethod
839
836
  def inspect_image(
840
837
  self, image_name: str, pull: bool = True, strip_wellknown_repo_prefixes: bool = True
841
- ) -> Dict[str, Union[dict, list, str]]:
838
+ ) -> dict[str, Union[dict, list, str]]:
842
839
  """Get detailed attributes of an image.
843
840
 
844
841
  :param image_name: Image name to inspect
@@ -864,7 +861,7 @@ class ContainerClient(metaclass=ABCMeta):
864
861
  """
865
862
 
866
863
  @abstractmethod
867
- def inspect_network(self, network_name: str) -> Dict[str, Union[Dict, str]]:
864
+ def inspect_network(self, network_name: str) -> dict[str, Union[dict, str]]:
868
865
  """Get detailed attributes of an network.
869
866
 
870
867
  :return: Dict containing docker attributes as returned by the daemon
@@ -875,8 +872,8 @@ class ContainerClient(metaclass=ABCMeta):
875
872
  self,
876
873
  network_name: str,
877
874
  container_name_or_id: str,
878
- aliases: Optional[List] = None,
879
- link_local_ips: List[str] = None,
875
+ aliases: Optional[list] = None,
876
+ link_local_ips: list[str] = None,
880
877
  ) -> None:
881
878
  """
882
879
  Connects a container to a given network
@@ -911,7 +908,7 @@ class ContainerClient(metaclass=ABCMeta):
911
908
  If container has multiple networks, it will return the IP of the first
912
909
  """
913
910
 
914
- def get_image_cmd(self, docker_image: str, pull: bool = True) -> List[str]:
911
+ def get_image_cmd(self, docker_image: str, pull: bool = True) -> list[str]:
915
912
  """Get the command for the given image
916
913
  :param docker_image: Docker image to inspect
917
914
  :param pull: Whether to pull if image is not present
@@ -988,28 +985,28 @@ class ContainerClient(metaclass=ABCMeta):
988
985
  image_name: str,
989
986
  *,
990
987
  name: Optional[str] = None,
991
- entrypoint: Optional[Union[List[str], str]] = None,
988
+ entrypoint: Optional[Union[list[str], str]] = None,
992
989
  remove: bool = False,
993
990
  interactive: bool = False,
994
991
  tty: bool = False,
995
992
  detach: bool = False,
996
- command: Optional[Union[List[str], str]] = None,
997
- volumes: Optional[Union[VolumeMappings, List[SimpleVolumeBind]]] = None,
993
+ command: Optional[Union[list[str], str]] = None,
994
+ volumes: Optional[Union[VolumeMappings, list[SimpleVolumeBind]]] = None,
998
995
  ports: Optional[PortMappings] = None,
999
- exposed_ports: Optional[List[str]] = None,
1000
- env_vars: Optional[Dict[str, str]] = None,
996
+ exposed_ports: Optional[list[str]] = None,
997
+ env_vars: Optional[dict[str, str]] = None,
1001
998
  user: Optional[str] = None,
1002
- cap_add: Optional[List[str]] = None,
1003
- cap_drop: Optional[List[str]] = None,
1004
- security_opt: Optional[List[str]] = None,
999
+ cap_add: Optional[list[str]] = None,
1000
+ cap_drop: Optional[list[str]] = None,
1001
+ security_opt: Optional[list[str]] = None,
1005
1002
  network: Optional[str] = None,
1006
- dns: Optional[Union[str, List[str]]] = None,
1003
+ dns: Optional[Union[str, list[str]]] = None,
1007
1004
  additional_flags: Optional[str] = None,
1008
1005
  workdir: Optional[str] = None,
1009
1006
  privileged: Optional[bool] = None,
1010
- labels: Optional[Dict[str, str]] = None,
1007
+ labels: Optional[dict[str, str]] = None,
1011
1008
  platform: Optional[DockerPlatform] = None,
1012
- ulimits: Optional[List[Ulimit]] = None,
1009
+ ulimits: Optional[list[Ulimit]] = None,
1013
1010
  init: Optional[bool] = None,
1014
1011
  log_config: Optional[LogConfig] = None,
1015
1012
  ) -> str:
@@ -1030,26 +1027,26 @@ class ContainerClient(metaclass=ABCMeta):
1030
1027
  interactive: bool = False,
1031
1028
  tty: bool = False,
1032
1029
  detach: bool = False,
1033
- command: Optional[Union[List[str], str]] = None,
1034
- volumes: Optional[Union[VolumeMappings, List[SimpleVolumeBind]]] = None,
1030
+ command: Optional[Union[list[str], str]] = None,
1031
+ volumes: Optional[Union[VolumeMappings, list[SimpleVolumeBind]]] = None,
1035
1032
  ports: Optional[PortMappings] = None,
1036
- exposed_ports: Optional[List[str]] = None,
1037
- env_vars: Optional[Dict[str, str]] = None,
1033
+ exposed_ports: Optional[list[str]] = None,
1034
+ env_vars: Optional[dict[str, str]] = None,
1038
1035
  user: Optional[str] = None,
1039
- cap_add: Optional[List[str]] = None,
1040
- cap_drop: Optional[List[str]] = None,
1041
- security_opt: Optional[List[str]] = None,
1036
+ cap_add: Optional[list[str]] = None,
1037
+ cap_drop: Optional[list[str]] = None,
1038
+ security_opt: Optional[list[str]] = None,
1042
1039
  network: Optional[str] = None,
1043
1040
  dns: Optional[str] = None,
1044
1041
  additional_flags: Optional[str] = None,
1045
1042
  workdir: Optional[str] = None,
1046
- labels: Optional[Dict[str, str]] = None,
1043
+ labels: Optional[dict[str, str]] = None,
1047
1044
  platform: Optional[DockerPlatform] = None,
1048
1045
  privileged: Optional[bool] = None,
1049
- ulimits: Optional[List[Ulimit]] = None,
1046
+ ulimits: Optional[list[Ulimit]] = None,
1050
1047
  init: Optional[bool] = None,
1051
1048
  log_config: Optional[LogConfig] = None,
1052
- ) -> Tuple[bytes, bytes]:
1049
+ ) -> tuple[bytes, bytes]:
1053
1050
  """Creates and runs a given docker container
1054
1051
 
1055
1052
  :return: A tuple (stdout, stderr)
@@ -1057,7 +1054,7 @@ class ContainerClient(metaclass=ABCMeta):
1057
1054
 
1058
1055
  def run_container_from_config(
1059
1056
  self, container_config: ContainerConfiguration
1060
- ) -> Tuple[bytes, bytes]:
1057
+ ) -> tuple[bytes, bytes]:
1061
1058
  """Like ``run_container`` but uses the parameters from the configuration."""
1062
1059
 
1063
1060
  return self.run_container(
@@ -1093,14 +1090,14 @@ class ContainerClient(metaclass=ABCMeta):
1093
1090
  def exec_in_container(
1094
1091
  self,
1095
1092
  container_name_or_id: str,
1096
- command: Union[List[str], str],
1093
+ command: Union[list[str], str],
1097
1094
  interactive: bool = False,
1098
1095
  detach: bool = False,
1099
- env_vars: Optional[Dict[str, Optional[str]]] = None,
1096
+ env_vars: Optional[dict[str, Optional[str]]] = None,
1100
1097
  stdin: Optional[bytes] = None,
1101
1098
  user: Optional[str] = None,
1102
1099
  workdir: Optional[str] = None,
1103
- ) -> Tuple[bytes, bytes]:
1100
+ ) -> tuple[bytes, bytes]:
1104
1101
  """Execute a given command in a container
1105
1102
 
1106
1103
  :return: A tuple (stdout, stderr)
@@ -1114,7 +1111,7 @@ class ContainerClient(metaclass=ABCMeta):
1114
1111
  interactive: bool = False,
1115
1112
  attach: bool = False,
1116
1113
  flags: Optional[str] = None,
1117
- ) -> Tuple[bytes, bytes]:
1114
+ ) -> tuple[bytes, bytes]:
1118
1115
  """Start a given, already created container
1119
1116
 
1120
1117
  :return: A tuple (stdout, stderr) if attach or interactive is set, otherwise a tuple (b"container_name_or_id", b"")
@@ -1147,7 +1144,7 @@ class Util:
1147
1144
  return f"{key}={value}"
1148
1145
 
1149
1146
  @classmethod
1150
- def create_env_vars_file_flag(cls, env_vars: Dict) -> Tuple[List[str], Optional[str]]:
1147
+ def create_env_vars_file_flag(cls, env_vars: dict) -> tuple[list[str], Optional[str]]:
1151
1148
  if not env_vars:
1152
1149
  return [], None
1153
1150
  result = []
@@ -1185,14 +1182,14 @@ class Util:
1185
1182
  return f
1186
1183
 
1187
1184
  @staticmethod
1188
- def append_without_latest(image_names: List[str]):
1185
+ def append_without_latest(image_names: list[str]):
1189
1186
  suffix = ":latest"
1190
1187
  for image in list(image_names):
1191
1188
  if image.endswith(suffix):
1192
1189
  image_names.append(image[: -len(suffix)])
1193
1190
 
1194
1191
  @staticmethod
1195
- def strip_wellknown_repo_prefixes(image_names: List[str]) -> List[str]:
1192
+ def strip_wellknown_repo_prefixes(image_names: list[str]) -> list[str]:
1196
1193
  """
1197
1194
  Remove well-known repo prefixes like `localhost/` or `docker.io/library/` from the list of given
1198
1195
  image names. This is mostly to ensure compatibility of our Docker client with Podman API responses.
@@ -1238,7 +1235,7 @@ class Util:
1238
1235
  LOG.debug("File to copy empty, ignoring...")
1239
1236
 
1240
1237
  @staticmethod
1241
- def _read_docker_cli_env_file(env_file: str) -> Dict[str, str]:
1238
+ def _read_docker_cli_env_file(env_file: str) -> dict[str, str]:
1242
1239
  """
1243
1240
  Read an environment file in docker CLI format, specified here:
1244
1241
  https://docs.docker.com/reference/cli/docker/container/run/#env
@@ -1247,7 +1244,7 @@ class Util:
1247
1244
  """
1248
1245
  env_vars = {}
1249
1246
  try:
1250
- with open(env_file, mode="rt") as f:
1247
+ with open(env_file) as f:
1251
1248
  env_file_lines = f.readlines()
1252
1249
  except FileNotFoundError as e:
1253
1250
  LOG.error(
@@ -1280,16 +1277,16 @@ class Util:
1280
1277
  @staticmethod
1281
1278
  def parse_additional_flags(
1282
1279
  additional_flags: str,
1283
- env_vars: Optional[Dict[str, str]] = None,
1284
- labels: Optional[Dict[str, str]] = None,
1285
- volumes: Optional[List[SimpleVolumeBind]] = None,
1280
+ env_vars: Optional[dict[str, str]] = None,
1281
+ labels: Optional[dict[str, str]] = None,
1282
+ volumes: Optional[list[SimpleVolumeBind]] = None,
1286
1283
  network: Optional[str] = None,
1287
1284
  platform: Optional[DockerPlatform] = None,
1288
1285
  ports: Optional[PortMappings] = None,
1289
1286
  privileged: Optional[bool] = None,
1290
1287
  user: Optional[str] = None,
1291
- ulimits: Optional[List[Ulimit]] = None,
1292
- dns: Optional[Union[str, List[str]]] = None,
1288
+ ulimits: Optional[list[Ulimit]] = None,
1289
+ dns: Optional[Union[str, list[str]]] = None,
1293
1290
  ) -> DockerRunFlags:
1294
1291
  """Parses additional CLI-formatted Docker flags, which could overwrite provided defaults.
1295
1292
  :param additional_flags: String which contains the flag definitions inspired by the Docker CLI reference:
@@ -1510,8 +1507,8 @@ class Util:
1510
1507
 
1511
1508
  @staticmethod
1512
1509
  def convert_mount_list_to_dict(
1513
- volumes: Union[List[SimpleVolumeBind], VolumeMappings],
1514
- ) -> Dict[str, Dict[str, str]]:
1510
+ volumes: Union[list[SimpleVolumeBind], VolumeMappings],
1511
+ ) -> dict[str, dict[str, str]]:
1515
1512
  """Converts a List of (host_path, container_path) tuples to a Dict suitable as volume argument for docker sdk"""
1516
1513
 
1517
1514
  def _map_to_dict(paths: SimpleVolumeBind | BindMount | VolumeDirMount):
@@ -6,7 +6,7 @@ import os
6
6
  import re
7
7
  import shlex
8
8
  import subprocess
9
- from typing import Callable, Dict, List, Optional, Tuple, Union
9
+ from typing import Callable, Optional, Union
10
10
 
11
11
  from localstack import config
12
12
  from localstack.utils.collections import ensure_list
@@ -98,7 +98,7 @@ class CmdDockerClient(ContainerClient):
98
98
 
99
99
  default_run_outfile: Optional[str] = None
100
100
 
101
- def _docker_cmd(self) -> List[str]:
101
+ def _docker_cmd(self) -> list[str]:
102
102
  """
103
103
  Get the configured, tested Docker CMD.
104
104
  :return: string to be used for running Docker commands
@@ -281,7 +281,7 @@ class CmdDockerClient(ContainerClient):
281
281
  "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr
282
282
  ) from e
283
283
 
284
- def list_containers(self, filter: Union[List[str], str, None] = None, all=True) -> List[dict]:
284
+ def list_containers(self, filter: Union[list[str], str, None] = None, all=True) -> list[dict]:
285
285
  filter = [filter] if isinstance(filter, str) else filter
286
286
  cmd = self._docker_cmd()
287
287
  cmd.append("ps")
@@ -489,7 +489,7 @@ class CmdDockerClient(ContainerClient):
489
489
 
490
490
  return CancellableProcessStream(process)
491
491
 
492
- def _inspect_object(self, object_name_or_id: str) -> Dict[str, Union[dict, list, str]]:
492
+ def _inspect_object(self, object_name_or_id: str) -> dict[str, Union[dict, list, str]]:
493
493
  cmd = self._docker_cmd()
494
494
  cmd += ["inspect", "--format", "{{json .}}", object_name_or_id]
495
495
  try:
@@ -516,7 +516,7 @@ class CmdDockerClient(ContainerClient):
516
516
  )
517
517
  return object_data
518
518
 
519
- def inspect_container(self, container_name_or_id: str) -> Dict[str, Union[Dict, str]]:
519
+ def inspect_container(self, container_name_or_id: str) -> dict[str, Union[dict, str]]:
520
520
  try:
521
521
  return self._inspect_object(container_name_or_id)
522
522
  except NoSuchObject as e:
@@ -527,7 +527,7 @@ class CmdDockerClient(ContainerClient):
527
527
  image_name: str,
528
528
  pull: bool = True,
529
529
  strip_wellknown_repo_prefixes: bool = True,
530
- ) -> Dict[str, Union[dict, list, str]]:
530
+ ) -> dict[str, Union[dict, list, str]]:
531
531
  image_name = self.registry_resolver_strategy.resolve(image_name)
532
532
  try:
533
533
  result = self._inspect_object(image_name)
@@ -569,7 +569,7 @@ class CmdDockerClient(ContainerClient):
569
569
  "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr
570
570
  ) from e
571
571
 
572
- def inspect_network(self, network_name: str) -> Dict[str, Union[Dict, str]]:
572
+ def inspect_network(self, network_name: str) -> dict[str, Union[dict, str]]:
573
573
  try:
574
574
  return self._inspect_object(network_name)
575
575
  except NoSuchObject as e:
@@ -579,8 +579,8 @@ class CmdDockerClient(ContainerClient):
579
579
  self,
580
580
  network_name: str,
581
581
  container_name_or_id: str,
582
- aliases: Optional[List] = None,
583
- link_local_ips: List[str] = None,
582
+ aliases: Optional[list] = None,
583
+ link_local_ips: list[str] = None,
584
584
  ) -> None:
585
585
  LOG.debug(
586
586
  "Connecting container '%s' to network '%s' with aliases '%s'",
@@ -657,7 +657,7 @@ class CmdDockerClient(ContainerClient):
657
657
  "Docker process returned with errorcode %s" % e.returncode, e.stdout, e.stderr
658
658
  ) from e
659
659
 
660
- @functools.lru_cache(maxsize=None)
660
+ @functools.cache
661
661
  def has_docker(self) -> bool:
662
662
  try:
663
663
  # do not use self._docker_cmd here (would result in a loop)
@@ -685,7 +685,7 @@ class CmdDockerClient(ContainerClient):
685
685
  finally:
686
686
  Util.rm_env_vars_file(env_file)
687
687
 
688
- def run_container(self, image_name: str, stdin=None, **kwargs) -> Tuple[bytes, bytes]:
688
+ def run_container(self, image_name: str, stdin=None, **kwargs) -> tuple[bytes, bytes]:
689
689
  image_name = self.registry_resolver_strategy.resolve(image_name)
690
690
  cmd, env_file = self._build_run_create_cmd("run", image_name, **kwargs)
691
691
  LOG.debug("Run container with cmd: %s", cmd)
@@ -701,14 +701,14 @@ class CmdDockerClient(ContainerClient):
701
701
  def exec_in_container(
702
702
  self,
703
703
  container_name_or_id: str,
704
- command: Union[List[str], str],
704
+ command: Union[list[str], str],
705
705
  interactive=False,
706
706
  detach=False,
707
- env_vars: Optional[Dict[str, Optional[str]]] = None,
707
+ env_vars: Optional[dict[str, Optional[str]]] = None,
708
708
  stdin: Optional[bytes] = None,
709
709
  user: Optional[str] = None,
710
710
  workdir: Optional[str] = None,
711
- ) -> Tuple[bytes, bytes]:
711
+ ) -> tuple[bytes, bytes]:
712
712
  env_file = None
713
713
  cmd = self._docker_cmd()
714
714
  cmd.append("exec")
@@ -724,7 +724,7 @@ class CmdDockerClient(ContainerClient):
724
724
  env_flag, env_file = Util.create_env_vars_file_flag(env_vars)
725
725
  cmd += env_flag
726
726
  cmd.append(container_name_or_id)
727
- cmd += command if isinstance(command, List) else [command]
727
+ cmd += command if isinstance(command, list) else [command]
728
728
  LOG.debug("Execute command in container: %s", cmd)
729
729
  try:
730
730
  return self._run_async_cmd(cmd, stdin, container_name_or_id)
@@ -738,7 +738,7 @@ class CmdDockerClient(ContainerClient):
738
738
  interactive: bool = False,
739
739
  attach: bool = False,
740
740
  flags: Optional[str] = None,
741
- ) -> Tuple[bytes, bytes]:
741
+ ) -> tuple[bytes, bytes]:
742
742
  cmd = self._docker_cmd() + ["start"]
743
743
  if flags:
744
744
  cmd.append(flags)
@@ -756,8 +756,8 @@ class CmdDockerClient(ContainerClient):
756
756
  return self._run_async_cmd(cmd, stdin=None, container_name=container_name_or_id)
757
757
 
758
758
  def _run_async_cmd(
759
- self, cmd: List[str], stdin: bytes, container_name: str, image_name=None
760
- ) -> Tuple[bytes, bytes]:
759
+ self, cmd: list[str], stdin: bytes, container_name: str, image_name=None
760
+ ) -> tuple[bytes, bytes]:
761
761
  kwargs = {
762
762
  "inherit_env": True,
763
763
  "asynchronous": True,
@@ -796,31 +796,31 @@ class CmdDockerClient(ContainerClient):
796
796
  image_name: str,
797
797
  *,
798
798
  name: Optional[str] = None,
799
- entrypoint: Optional[Union[List[str], str]] = None,
799
+ entrypoint: Optional[Union[list[str], str]] = None,
800
800
  remove: bool = False,
801
801
  interactive: bool = False,
802
802
  tty: bool = False,
803
803
  detach: bool = False,
804
- command: Optional[Union[List[str], str]] = None,
805
- volumes: Optional[List[SimpleVolumeBind]] = None,
804
+ command: Optional[Union[list[str], str]] = None,
805
+ volumes: Optional[list[SimpleVolumeBind]] = None,
806
806
  ports: Optional[PortMappings] = None,
807
- exposed_ports: Optional[List[str]] = None,
808
- env_vars: Optional[Dict[str, str]] = None,
807
+ exposed_ports: Optional[list[str]] = None,
808
+ env_vars: Optional[dict[str, str]] = None,
809
809
  user: Optional[str] = None,
810
- cap_add: Optional[List[str]] = None,
811
- cap_drop: Optional[List[str]] = None,
812
- security_opt: Optional[List[str]] = None,
810
+ cap_add: Optional[list[str]] = None,
811
+ cap_drop: Optional[list[str]] = None,
812
+ security_opt: Optional[list[str]] = None,
813
813
  network: Optional[str] = None,
814
- dns: Optional[Union[str, List[str]]] = None,
814
+ dns: Optional[Union[str, list[str]]] = None,
815
815
  additional_flags: Optional[str] = None,
816
816
  workdir: Optional[str] = None,
817
817
  privileged: Optional[bool] = None,
818
- labels: Optional[Dict[str, str]] = None,
818
+ labels: Optional[dict[str, str]] = None,
819
819
  platform: Optional[DockerPlatform] = None,
820
- ulimits: Optional[List[Ulimit]] = None,
820
+ ulimits: Optional[list[Ulimit]] = None,
821
821
  init: Optional[bool] = None,
822
822
  log_config: Optional[LogConfig] = None,
823
- ) -> Tuple[List[str], str]:
823
+ ) -> tuple[list[str], str]:
824
824
  env_file = None
825
825
  cmd = self._docker_cmd() + [action]
826
826
  if remove:
@@ -888,7 +888,7 @@ class CmdDockerClient(ContainerClient):
888
888
  cmd += shlex.split(additional_flags)
889
889
  cmd.append(image_name)
890
890
  if command:
891
- cmd += command if isinstance(command, List) else [command]
891
+ cmd += command if isinstance(command, list) else [command]
892
892
  return cmd, env_file
893
893
 
894
894
  @staticmethod
@@ -922,13 +922,13 @@ class CmdDockerClient(ContainerClient):
922
922
  if any(msg.lower() in process_stdout_lower for msg in error_messages):
923
923
  raise NoSuchContainer(container_name_or_id, stdout=error.stdout, stderr=error.stderr)
924
924
 
925
- def _transform_container_labels(self, labels: Union[str, Dict[str, str]]) -> Dict[str, str]:
925
+ def _transform_container_labels(self, labels: Union[str, dict[str, str]]) -> dict[str, str]:
926
926
  """
927
927
  Transforms the container labels returned by the docker command from the key-value pair format to a dict
928
928
  :param labels: Input string, comma separated key value pairs. Example: key1=value1,key2=value2
929
929
  :return: Dict representation of the passed values, example: {"key1": "value1", "key2": "value2"}
930
930
  """
931
- if isinstance(labels, Dict):
931
+ if isinstance(labels, dict):
932
932
  return labels
933
933
 
934
934
  labels = labels.split(",")