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
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from localstack.aws.api.stepfunctions import HistoryEventType
4
2
  from localstack.services.stepfunctions.asl.component.common.flow.end import End
5
3
  from localstack.services.stepfunctions.asl.component.common.flow.next import Next
@@ -16,7 +14,7 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
16
14
 
17
15
  class StateChoice(CommonStateField):
18
16
  choices_decl: ChoicesDecl
19
- default_state: Optional[DefaultDecl]
17
+ default_state: DefaultDecl | None
20
18
 
21
19
  def __init__(self):
22
20
  super(StateChoice, self).__init__(
@@ -3,7 +3,7 @@ import copy
3
3
  import logging
4
4
  import threading
5
5
  from threading import Thread
6
- from typing import Any, Optional
6
+ from typing import Any
7
7
 
8
8
  from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
9
9
  from localstack.services.stepfunctions.asl.component.common.catch.catch_decl import CatchDecl
@@ -44,7 +44,7 @@ class ExecutionState(CommonStateField, abc.ABC):
44
44
  def __init__(
45
45
  self,
46
46
  state_entered_event_type: HistoryEventType,
47
- state_exited_event_type: Optional[HistoryEventType],
47
+ state_exited_event_type: HistoryEventType | None,
48
48
  ):
49
49
  super().__init__(
50
50
  state_entered_event_type=state_entered_event_type,
@@ -54,20 +54,20 @@ class ExecutionState(CommonStateField, abc.ABC):
54
54
  # Specifies where (in the input) to place the results of executing the state_task that's specified in Resource.
55
55
  # The input is then filtered as specified by the OutputPath field (if present) before being used as the
56
56
  # state's output.
57
- self.result_path: Optional[ResultPath] = None
57
+ self.result_path: ResultPath | None = None
58
58
 
59
59
  # ResultSelector (Optional)
60
60
  # Pass a collection of key value pairs, where the values are static or selected from the result.
61
- self.result_selector: Optional[ResultSelector] = None
61
+ self.result_selector: ResultSelector | None = None
62
62
 
63
63
  # Retry (Optional)
64
64
  # An array of objects, called Retriers, that define a retry policy if the state encounters runtime errors.
65
- self.retry: Optional[RetryDecl] = None
65
+ self.retry: RetryDecl | None = None
66
66
 
67
67
  # Catch (Optional)
68
68
  # An array of objects, called Catchers, that define a fallback state. This state is executed if the state
69
69
  # encounters runtime errors and its retry policy is exhausted or isn't defined.
70
- self.catch: Optional[CatchDecl] = None
70
+ self.catch: CatchDecl | None = None
71
71
 
72
72
  # TimeoutSeconds (Optional)
73
73
  # If the state_task runs longer than the specified seconds, this state fails with a States.Timeout error name.
@@ -93,7 +93,7 @@ class ExecutionState(CommonStateField, abc.ABC):
93
93
  # HeartbeatSecondsPath. When resolved, the reference path must select fields whose values are positive integers.
94
94
  # A Task state cannot include both HeartbeatSeconds and HeartbeatSecondsPath
95
95
  # HeartbeatSeconds and HeartbeatSecondsPath fields are encoded by the Heartbeat type.
96
- self.heartbeat: Optional[Heartbeat] = None
96
+ self.heartbeat: Heartbeat | None = None
97
97
 
98
98
  def from_state_props(self, state_props: StateProps) -> None:
99
99
  super().from_state_props(state_props=state_props)
@@ -171,7 +171,7 @@ class ExecutionState(CommonStateField, abc.ABC):
171
171
  frame.states.reset(input_value=env.states.get_input())
172
172
  frame.stack = copy.deepcopy(env.stack)
173
173
  execution_outputs: list[Any] = list()
174
- execution_exceptions: list[Optional[Exception]] = [None]
174
+ execution_exceptions: list[Exception | None] = [None]
175
175
  terminated_event = threading.Event()
176
176
 
177
177
  def _exec_and_notify():
@@ -1,5 +1,5 @@
1
1
  import copy
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.parargs import Parargs
5
5
  from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
@@ -26,15 +26,15 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
26
26
 
27
27
  class ItemReader(EvalComponent):
28
28
  resource_eval: Final[ResourceEval]
29
- parargs: Final[Optional[Parargs]]
30
- reader_config: Final[Optional[ReaderConfig]]
31
- resource_output_transformer: Optional[ResourceOutputTransformer]
29
+ parargs: Final[Parargs | None]
30
+ reader_config: Final[ReaderConfig | None]
31
+ resource_output_transformer: ResourceOutputTransformer | None
32
32
 
33
33
  def __init__(
34
34
  self,
35
35
  resource: Resource,
36
- parargs: Optional[Parargs],
37
- reader_config: Optional[ReaderConfig],
36
+ parargs: Parargs | None,
37
+ reader_config: ReaderConfig | None,
38
38
  ):
39
39
  self.resource_eval = resource_eval_for(resource=resource)
40
40
  self.parargs = parargs
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional, TypedDict
1
+ from typing import Final, TypedDict
2
2
 
3
3
  from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
4
4
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_reader.reader_config.csv_header_location import (
@@ -34,7 +34,7 @@ MaxItemsValueOutput = int
34
34
  class ReaderConfigOutput(TypedDict):
35
35
  InputType: InputTypeOutput
36
36
  CSVHeaderLocation: CSVHeaderLocationOutput
37
- CSVHeaders: Optional[CSVHeadersOutput]
37
+ CSVHeaders: CSVHeadersOutput | None
38
38
  MaxItemsValue: MaxItemsValueOutput
39
39
 
40
40
 
@@ -42,14 +42,14 @@ class ReaderConfig(EvalComponent):
42
42
  input_type: Final[InputType]
43
43
  max_items_decl: Final[MaxItemsDecl]
44
44
  csv_header_location: Final[CSVHeaderLocation]
45
- csv_headers: Optional[CSVHeaders]
45
+ csv_headers: CSVHeaders | None
46
46
 
47
47
  def __init__(
48
48
  self,
49
49
  input_type: InputType,
50
50
  csv_header_location: CSVHeaderLocation,
51
- csv_headers: Optional[CSVHeaders],
52
- max_items_decl: Optional[MaxItemsDecl],
51
+ csv_headers: CSVHeaders | None,
52
+ max_items_decl: MaxItemsDecl | None,
53
53
  ):
54
54
  self.input_type = input_type
55
55
  self.max_items_decl = max_items_decl or MaxItemsInt()
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Callable, Final
3
+ from collections.abc import Callable
4
+ from typing import Final
4
5
 
5
6
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_reader.resource_eval.resource_eval import (
6
7
  ResourceEval,
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import abc
4
4
  import json
5
- from typing import Any, Final, Optional
5
+ from typing import Any, Final
6
6
 
7
7
  from localstack.aws.api.stepfunctions import (
8
8
  HistoryEventType,
@@ -50,8 +50,8 @@ from localstack.services.stepfunctions.asl.eval.event.event_manager import (
50
50
 
51
51
 
52
52
  class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
53
- item_reader: Final[Optional[ItemReader]]
54
- label: Final[Optional[str]]
53
+ item_reader: Final[ItemReader | None]
54
+ label: Final[str | None]
55
55
  map_run_record: Final[MapRunRecord]
56
56
 
57
57
  def __init__(
@@ -59,12 +59,12 @@ class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
59
59
  state_name: str,
60
60
  max_concurrency: int,
61
61
  input_items: list[json],
62
- parameters: Optional[Parameters],
63
- item_selector: Optional[ItemSelector],
64
- item_reader: Optional[ItemReader],
62
+ parameters: Parameters | None,
63
+ item_selector: ItemSelector | None,
64
+ item_reader: ItemReader | None,
65
65
  tolerated_failure_count: int,
66
66
  tolerated_failure_percentage: float,
67
- label: Optional[str],
67
+ label: str | None,
68
68
  map_run_record: MapRunRecord,
69
69
  ):
70
70
  super().__init__(
@@ -118,7 +118,7 @@ class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
118
118
 
119
119
  job_pool.await_jobs()
120
120
 
121
- worker_exception: Optional[Exception] = job_pool.get_worker_exception()
121
+ worker_exception: Exception | None = job_pool.get_worker_exception()
122
122
  if worker_exception is not None:
123
123
  raise worker_exception
124
124
 
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  import abc
4
4
  import json
5
5
  import threading
6
- from typing import Any, Final, Optional
6
+ from typing import Any, Final
7
7
 
8
8
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
9
9
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
@@ -38,16 +38,16 @@ class InlineIterationComponentEvalInput:
38
38
  state_name: Final[str]
39
39
  max_concurrency: Final[int]
40
40
  input_items: Final[list[json]]
41
- parameters: Final[Optional[Parameters]]
42
- item_selector: Final[Optional[ItemSelector]]
41
+ parameters: Final[Parameters | None]
42
+ item_selector: Final[ItemSelector | None]
43
43
 
44
44
  def __init__(
45
45
  self,
46
46
  state_name: str,
47
47
  max_concurrency: int,
48
48
  input_items: list[json],
49
- parameters: Optional[Parameters],
50
- item_selector: Optional[ItemSelector],
49
+ parameters: Parameters | None,
50
+ item_selector: ItemSelector | None,
51
51
  ):
52
52
  self.state_name = state_name
53
53
  self.max_concurrency = max_concurrency
@@ -65,7 +65,7 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
65
65
  start_at: StartAt,
66
66
  states: States,
67
67
  processor_config: ProcessorConfig,
68
- comment: Optional[Comment],
68
+ comment: Comment | None,
69
69
  ):
70
70
  super().__init__(
71
71
  query_language=query_language, start_at=start_at, states=states, comment=comment
@@ -105,7 +105,7 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
105
105
 
106
106
  job_pool.await_jobs()
107
107
 
108
- worker_exception: Optional[Exception] = job_pool.get_worker_exception()
108
+ worker_exception: Exception | None = job_pool.get_worker_exception()
109
109
  if worker_exception is not None:
110
110
  raise worker_exception
111
111
 
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
5
5
  FailureEventException,
@@ -44,8 +44,8 @@ class DistributedItemProcessorWorker(InlineItemProcessorWorker):
44
44
  job_pool: JobPool,
45
45
  env: Environment,
46
46
  item_reader: ItemReader,
47
- parameters: Optional[Parameters],
48
- item_selector: Optional[ItemSelector],
47
+ parameters: Parameters | None,
48
+ item_selector: ItemSelector | None,
49
49
  map_run_record: MapRunRecord,
50
50
  ):
51
51
  super().__init__(
@@ -124,7 +124,7 @@ class DistributedItemProcessorWorker(InlineItemProcessorWorker):
124
124
  self._map_run_record.item_counter.running.offset(-1)
125
125
  job.job_output = job_output
126
126
 
127
- def _eval_pool(self, job: Optional[Job], worker_frame: Environment) -> None:
127
+ def _eval_pool(self, job: Job | None, worker_frame: Environment) -> None:
128
128
  if job is None:
129
129
  self._env.delete_frame(worker_frame)
130
130
  return
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.parargs import Parameters
5
5
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_selector import (
@@ -17,16 +17,16 @@ LOG = logging.getLogger(__name__)
17
17
 
18
18
 
19
19
  class InlineItemProcessorWorker(IterationWorker):
20
- _parameters: Final[Optional[Parameters]]
21
- _item_selector: Final[Optional[ItemSelector]]
20
+ _parameters: Final[Parameters | None]
21
+ _item_selector: Final[ItemSelector | None]
22
22
 
23
23
  def __init__(
24
24
  self,
25
25
  work_name: str,
26
26
  job_pool: JobPool,
27
27
  env: Environment,
28
- item_selector: Optional[ItemSelector],
29
- parameters: Optional[Parameters],
28
+ item_selector: ItemSelector | None,
29
+ parameters: Parameters | None,
30
30
  ):
31
31
  super().__init__(work_name=work_name, job_pool=job_pool, env=env)
32
32
  self._item_selector = item_selector
@@ -2,7 +2,7 @@ import abc
2
2
  import datetime
3
3
  import threading
4
4
  from collections import OrderedDict
5
- from typing import Final, Optional
5
+ from typing import Final
6
6
 
7
7
  from localstack.aws.api.stepfunctions import (
8
8
  Arn,
@@ -98,7 +98,7 @@ class MapRunRecord:
98
98
  item_counter: Final[ItemCounter]
99
99
  start_date: Timestamp
100
100
  status: MapRunStatus
101
- stop_date: Optional[Timestamp]
101
+ stop_date: Timestamp | None
102
102
  # TODO: add support for failure toleration fields.
103
103
  tolerated_failure_count: int
104
104
  tolerated_failure_percentage: float
@@ -110,7 +110,7 @@ class MapRunRecord:
110
110
  max_concurrency: int,
111
111
  tolerated_failure_count: int,
112
112
  tolerated_failure_percentage: float,
113
- label: Optional[str],
113
+ label: str | None,
114
114
  ):
115
115
  self.update_event = threading.Event()
116
116
  (
@@ -123,7 +123,7 @@ class MapRunRecord:
123
123
  self.max_concurrency = max_concurrency
124
124
  self.execution_counter = ExecutionCounter()
125
125
  self.item_counter = ItemCounter()
126
- self.start_date = datetime.datetime.now(tz=datetime.timezone.utc)
126
+ self.start_date = datetime.datetime.now(tz=datetime.UTC)
127
127
  self.status = MapRunStatus.RUNNING
128
128
  self.stop_date = None
129
129
  self.tolerated_failure_count = tolerated_failure_count
@@ -131,7 +131,7 @@ class MapRunRecord:
131
131
 
132
132
  @staticmethod
133
133
  def _generate_map_run_arns(
134
- state_machine_arn: Arn, label: Optional[str]
134
+ state_machine_arn: Arn, label: str | None
135
135
  ) -> tuple[LongArn, LongArn]:
136
136
  # Generate a new MapRunArn given the StateMachineArn, such that:
137
137
  # inp: arn:aws:states:<region>:111111111111:stateMachine:<ArnPart_0idx>
@@ -144,7 +144,7 @@ class MapRunRecord:
144
144
 
145
145
  def set_stop(self, status: MapRunStatus):
146
146
  self.status = status
147
- self.stop_date = datetime.datetime.now(tz=datetime.timezone.utc)
147
+ self.stop_date = datetime.datetime.now(tz=datetime.UTC)
148
148
 
149
149
  def describe(self) -> DescribeMapRunOutput:
150
150
  describe_output = DescribeMapRunOutput(
@@ -176,9 +176,9 @@ class MapRunRecord:
176
176
 
177
177
  def update(
178
178
  self,
179
- max_concurrency: Optional[int],
180
- tolerated_failure_count: Optional[int],
181
- tolerated_failure_percentage: Optional[float],
179
+ max_concurrency: int | None,
180
+ tolerated_failure_count: int | None,
181
+ tolerated_failure_percentage: float | None,
182
182
  ) -> None:
183
183
  if max_concurrency is not None:
184
184
  self.max_concurrency = max_concurrency
@@ -198,7 +198,7 @@ class MapRunRecordPoolManager:
198
198
  def add(self, map_run_record: MapRunRecord) -> None:
199
199
  self._pool[map_run_record.map_run_arn] = map_run_record
200
200
 
201
- def get(self, map_run_arn: LongArn) -> Optional[MapRunRecord]:
201
+ def get(self, map_run_arn: LongArn) -> MapRunRecord | None:
202
202
  return self._pool.get(map_run_arn)
203
203
 
204
204
  def get_all(self) -> list[MapRunRecord]:
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import abc
4
- from typing import Final, Optional
4
+ from typing import Final
5
5
 
6
6
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
7
7
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
@@ -18,14 +18,14 @@ class IterationComponent(EvalComponent, abc.ABC):
18
18
  _query_language: Final[QueryLanguage]
19
19
  _start_at: Final[StartAt]
20
20
  _states: Final[States]
21
- _comment: Final[Optional[Comment]]
21
+ _comment: Final[Comment | None]
22
22
 
23
23
  def __init__(
24
24
  self,
25
25
  query_language: QueryLanguage,
26
26
  start_at: StartAt,
27
27
  states: States,
28
- comment: Optional[Comment],
28
+ comment: Comment | None,
29
29
  ):
30
30
  self._query_language = query_language
31
31
  self._start_at = start_at
@@ -1,4 +1,4 @@
1
- from typing import Final, Optional
1
+ from typing import Final
2
2
 
3
3
  from localstack.services.stepfunctions.asl.component.common.comment import Comment
4
4
  from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
@@ -11,7 +11,7 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
11
11
 
12
12
 
13
13
  class IterationDecl(Component):
14
- comment: Final[Optional[Comment]]
14
+ comment: Final[Comment | None]
15
15
  query_language: Final[QueryLanguage]
16
16
  start_at: Final[StartAt]
17
17
  states: Final[States]
@@ -19,7 +19,7 @@ class IterationDecl(Component):
19
19
 
20
20
  def __init__(
21
21
  self,
22
- comment: Optional[Comment],
22
+ comment: Comment | None,
23
23
  query_language: QueryLanguage,
24
24
  start_at: StartAt,
25
25
  states: States,
@@ -1,6 +1,6 @@
1
1
  import abc
2
2
  import logging
3
- from typing import Final, Optional
3
+ from typing import Final
4
4
 
5
5
  from localstack.aws.api.stepfunctions import HistoryEventType, MapIterationEventDetails
6
6
  from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
@@ -169,7 +169,7 @@ class IterationWorker(abc.ABC):
169
169
  finally:
170
170
  job.job_output = job_output
171
171
 
172
- def _eval_pool(self, job: Optional[Job], worker_frame: Environment) -> None:
172
+ def _eval_pool(self, job: Job | None, worker_frame: Environment) -> None:
173
173
  # Note: the frame has to be closed before the job, to ensure the owner environment is correctly updated
174
174
  # before the evaluation continues; map states await for job termination not workers termination.
175
175
  if job is None:
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
4
2
  FailureEventException,
5
3
  )
@@ -35,9 +33,9 @@ class DistributedIteratorWorker(InlineIteratorWorker):
35
33
  work_name: str,
36
34
  job_pool: JobPool,
37
35
  env: Environment,
38
- parameters: Optional[Parameters],
36
+ parameters: Parameters | None,
39
37
  map_run_record: MapRunRecord,
40
- item_selector: Optional[ItemSelector],
38
+ item_selector: ItemSelector | None,
41
39
  ):
42
40
  super().__init__(
43
41
  work_name=work_name,
@@ -99,7 +97,7 @@ class DistributedIteratorWorker(InlineIteratorWorker):
99
97
  self._map_run_record.item_counter.running.offset(-1)
100
98
  job.job_output = job_output
101
99
 
102
- def _eval_pool(self, job: Optional[Job], worker_frame: Environment) -> None:
100
+ def _eval_pool(self, job: Job | None, worker_frame: Environment) -> None:
103
101
  # Note: the frame has to be closed before the job, to ensure the owner environment is correctly updated
104
102
  # before the evaluation continues; map states await for job termination not workers termination.
105
103
  if job is None:
@@ -1,7 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import logging
4
- from typing import Optional
5
4
 
6
5
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.iteration.inline_iteration_component import (
7
6
  InlineIterationComponent,
@@ -26,7 +25,7 @@ class InlineIteratorEvalInput(InlineIterationComponentEvalInput):
26
25
 
27
26
 
28
27
  class InlineIterator(InlineIterationComponent):
29
- _eval_input: Optional[InlineIteratorEvalInput]
28
+ _eval_input: InlineIteratorEvalInput | None
30
29
 
31
30
  def _create_worker(
32
31
  self, env: Environment, eval_input: InlineIteratorEvalInput, job_pool: JobPool
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from typing import Final, Optional
2
+ from typing import Final
3
3
 
4
4
  from localstack.services.stepfunctions.asl.component.common.parargs import Parameters
5
5
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_selector import (
@@ -17,16 +17,16 @@ LOG = logging.getLogger(__name__)
17
17
 
18
18
 
19
19
  class InlineIteratorWorker(IterationWorker):
20
- _parameters: Final[Optional[Parameters]]
21
- _item_selector: Final[Optional[ItemSelector]]
20
+ _parameters: Final[Parameters | None]
21
+ _item_selector: Final[ItemSelector | None]
22
22
 
23
23
  def __init__(
24
24
  self,
25
25
  work_name: str,
26
26
  job_pool: JobPool,
27
27
  env: Environment,
28
- item_selector: Optional[ItemSelector],
29
- parameters: Optional[Parameters],
28
+ item_selector: ItemSelector | None,
29
+ parameters: Parameters | None,
30
30
  ):
31
31
  super().__init__(work_name=work_name, job_pool=job_pool, env=env)
32
32
  self._item_selector = item_selector
@@ -1,7 +1,7 @@
1
1
  import copy
2
2
  import logging
3
3
  import threading
4
- from typing import Any, Final, Optional
4
+ from typing import Any, Final
5
5
 
6
6
  from localstack.services.stepfunctions.asl.component.program.program import Program
7
7
  from localstack.services.stepfunctions.asl.utils.encoding import to_json_str
@@ -12,10 +12,10 @@ LOG = logging.getLogger(__name__)
12
12
  class Job:
13
13
  job_index: Final[int]
14
14
  job_program: Final[Program]
15
- job_input: Final[Optional[Any]]
16
- job_output: Optional[Any]
15
+ job_input: Final[Any | None]
16
+ job_output: Any | None
17
17
 
18
- def __init__(self, job_index: int, job_program: Program, job_input: Optional[Any]):
18
+ def __init__(self, job_index: int, job_program: Program, job_input: Any | None):
19
19
  self.job_index = job_index
20
20
  self.job_program = job_program
21
21
  self.job_input = job_input
@@ -24,9 +24,9 @@ class Job:
24
24
 
25
25
  class JobClosed:
26
26
  job_index: Final[int]
27
- job_output: Optional[Any]
27
+ job_output: Any | None
28
28
 
29
- def __init__(self, job_index: int, job_output: Optional[Any]):
29
+ def __init__(self, job_index: int, job_output: Any | None):
30
30
  self.job_index = job_index
31
31
  self.job_output = job_output
32
32
 
@@ -37,7 +37,7 @@ class JobClosed:
37
37
  class JobPool:
38
38
  _mutex: Final[threading.Lock]
39
39
  _termination_event: Final[threading.Event]
40
- _worker_exception: Optional[Exception]
40
+ _worker_exception: Exception | None
41
41
 
42
42
  _jobs_number: Final[int]
43
43
  _open_jobs: Final[list[Job]]
@@ -56,7 +56,7 @@ class JobPool:
56
56
  self._open_jobs.reverse()
57
57
  self._closed_jobs = set()
58
58
 
59
- def next_job(self) -> Optional[Any]:
59
+ def next_job(self) -> Any | None:
60
60
  with self._mutex:
61
61
  if self._worker_exception is not None:
62
62
  return None
@@ -72,7 +72,7 @@ class JobPool:
72
72
  if self._is_terminated():
73
73
  self._termination_event.set()
74
74
 
75
- def get_worker_exception(self) -> Optional[Exception]:
75
+ def get_worker_exception(self) -> Exception | None:
76
76
  return self._worker_exception
77
77
 
78
78
  def close_job(self, job: Job) -> None:
@@ -1,7 +1,8 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import json
4
- from typing import Callable, Final
4
+ from collections.abc import Callable
5
+ from typing import Final
5
6
 
6
7
  from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.result_writer.resource_eval.resource_eval import (
7
8
  ResourceEval,
@@ -1,5 +1,4 @@
1
1
  import copy
2
- from typing import Optional
3
2
 
4
3
  from localstack.aws.api.stepfunctions import (
5
4
  EvaluationFailedEventDetails,
@@ -99,21 +98,21 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
99
98
 
100
99
 
101
100
  class StateMap(ExecutionState):
102
- items: Optional[Items]
103
- items_path: Optional[ItemsPath]
101
+ items: Items | None
102
+ items_path: ItemsPath | None
104
103
  iteration_component: IterationComponent
105
- item_reader: Optional[ItemReader]
106
- item_selector: Optional[ItemSelector]
107
- parameters: Optional[Parameters]
104
+ item_reader: ItemReader | None
105
+ item_selector: ItemSelector | None
106
+ parameters: Parameters | None
108
107
  max_concurrency_decl: MaxConcurrencyDecl
109
108
  tolerated_failure_count_decl: ToleratedFailureCountDecl
110
109
  tolerated_failure_percentage_decl: ToleratedFailurePercentage
111
- result_path: Optional[ResultPath]
110
+ result_path: ResultPath | None
112
111
  result_selector: ResultSelector
113
- retry: Optional[RetryDecl]
114
- catch: Optional[CatchDecl]
115
- label: Optional[Label]
116
- result_writer: Optional[ResultWriter]
112
+ retry: RetryDecl | None
113
+ catch: CatchDecl | None
114
+ label: Label | None
115
+ result_writer: ResultWriter | None
117
116
 
118
117
  def __init__(self):
119
118
  super(StateMap, self).__init__(
@@ -1,7 +1,7 @@
1
1
  import abc
2
2
  import logging
3
3
  import threading
4
- from typing import Final, Optional
4
+ from typing import Final
5
5
 
6
6
  from localstack.aws.api.stepfunctions import Timestamp
7
7
  from localstack.services.stepfunctions.asl.component.program.program import Program
@@ -18,7 +18,7 @@ class BranchWorker:
18
18
 
19
19
  _branch_worker_comm: Final[BranchWorkerComm]
20
20
  _program: Final[Program]
21
- _worker_thread: Optional[threading.Thread]
21
+ _worker_thread: threading.Thread | None
22
22
  env: Final[Environment]
23
23
 
24
24
  def __init__(self, branch_worker_comm: BranchWorkerComm, program: Program, env: Environment):
@@ -43,7 +43,7 @@ class BranchWorker:
43
43
  TMP_THREADS.append(self._worker_thread)
44
44
  self._worker_thread.start()
45
45
 
46
- def stop(self, stop_date: Timestamp, cause: Optional[str], error: Optional[str]) -> None:
46
+ def stop(self, stop_date: Timestamp, cause: str | None, error: str | None) -> None:
47
47
  env = self.env
48
48
  if env:
49
49
  try: