localstack-core 4.6.1.dev60__py3-none-any.whl → 4.10.1.dev12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/aws/api/apigateway/__init__.py +87 -110
- localstack/aws/api/cloudformation/__init__.py +18 -4
- localstack/aws/api/cloudwatch/__init__.py +41 -1
- localstack/aws/api/config/__init__.py +4 -0
- localstack/aws/api/core.py +8 -5
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1545 -66
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/iam/__init__.py +7 -0
- localstack/aws/api/kinesis/__init__.py +19 -0
- localstack/aws/api/kms/__init__.py +6 -0
- localstack/aws/api/lambda_/__init__.py +36 -23
- localstack/aws/api/logs/__init__.py +20 -8
- localstack/aws/api/opensearch/__init__.py +16 -0
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/redshift/__init__.py +9 -3
- localstack/aws/api/route53/__init__.py +5 -0
- localstack/aws/api/s3/__init__.py +12 -0
- localstack/aws/api/s3control/__init__.py +56 -0
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +14 -11
- localstack/aws/connect.py +42 -41
- localstack/aws/forwarder.py +57 -9
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +2 -3
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +13 -4
- localstack/aws/handlers/metric_handler.py +44 -5
- localstack/aws/handlers/service.py +48 -28
- localstack/aws/mocking.py +18 -27
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +475 -49
- localstack/aws/protocol/serializer.py +723 -106
- localstack/aws/protocol/service_router.py +133 -33
- localstack/aws/protocol/validate.py +6 -6
- localstack/aws/scaffold.py +9 -10
- localstack/aws/serving/edge.py +5 -6
- localstack/aws/serving/hypercorn.py +2 -2
- localstack/aws/serving/twisted.py +1 -2
- localstack/aws/serving/werkzeug.py +2 -2
- localstack/aws/skeleton.py +12 -11
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +66 -46
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +11 -11
- localstack/cli/lpm.py +4 -5
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +44 -30
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/__main__.py +5 -5
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +6 -6
- localstack/dns/models.py +2 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +16 -6
- localstack/http/dispatcher.py +1 -2
- localstack/http/response.py +2 -2
- localstack/http/router.py +1 -1
- localstack/http/trace.py +2 -1
- localstack/logging/format.py +6 -6
- localstack/packages/api.py +13 -12
- localstack/packages/core.py +4 -4
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +38 -12
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +8 -9
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +7 -10
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +27 -28
- localstack/services/apigateway/legacy/integration.py +11 -10
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +6 -6
- localstack/services/apigateway/models.py +16 -16
- localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
- localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
- localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
- localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +9 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
- localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- localstack/services/apigateway/next_gen/provider.py +5 -0
- localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
- localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
- localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
- localstack/services/cdk/resource_providers/cdk_metadata.py +4 -3
- localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
- localstack/services/cloudformation/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +2 -2
- localstack/services/cloudformation/deployment_utils.py +14 -12
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +27 -17
- localstack/services/cloudformation/engine/parameters.py +4 -4
- localstack/services/cloudformation/engine/template_deployer.py +15 -14
- localstack/services/cloudformation/engine/template_utils.py +34 -12
- localstack/services/cloudformation/engine/transformers.py +11 -8
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
- localstack/services/cloudformation/engine/v2/resolving.py +102 -0
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +11 -6
- localstack/services/cloudformation/provider_utils.py +34 -4
- localstack/services/cloudformation/resource_provider.py +31 -21
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
- localstack/services/cloudformation/resources.py +24149 -0
- localstack/services/cloudformation/scaffolding/__main__.py +13 -12
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/stores.py +33 -22
- localstack/services/cloudformation/v2/entities.py +103 -88
- localstack/services/cloudformation/v2/provider.py +872 -131
- localstack/services/cloudformation/v2/types.py +38 -0
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +11 -8
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +30 -25
- localstack/services/cloudwatch/provider_v2.py +27 -32
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
- localstack/services/dynamodb/packages.py +3 -3
- localstack/services/dynamodb/provider.py +159 -18
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/server.py +2 -2
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +157 -18
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +26 -5
- localstack/services/ec2/provider.py +3 -3
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
- localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
- localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +29 -22
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +22 -19
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +6 -6
- localstack/services/es/provider.py +21 -21
- localstack/services/events/archive.py +2 -2
- localstack/services/events/connection.py +5 -5
- localstack/services/events/event_bus.py +9 -9
- localstack/services/events/event_rule_engine.py +31 -13
- localstack/services/events/models.py +29 -30
- localstack/services/events/provider.py +29 -26
- localstack/services/events/replay.py +3 -3
- localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
- localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_connection.py +27 -27
- localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
- localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
- localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_rule.py +82 -82
- localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
- localstack/services/events/rule.py +15 -15
- localstack/services/events/target.py +21 -13
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +15 -15
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +25 -16
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +14 -119
- localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
- localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
- localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
- localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
- localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
- localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
- localstack/services/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +17 -5
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/provider.py +86 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
- localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
- localstack/services/kms/models.py +21 -18
- localstack/services/kms/provider.py +62 -26
- localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
- localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
- localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
- localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
- localstack/services/kms/utils.py +4 -3
- localstack/services/lambda_/api_utils.py +19 -16
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
- localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
- localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
- localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
- localstack/services/lambda_/hooks.py +6 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
- localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
- localstack/services/lambda_/invocation/lambda_models.py +33 -30
- localstack/services/lambda_/invocation/lambda_service.py +12 -5
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/invocation/version_manager.py +31 -8
- localstack/services/lambda_/ldm.py +14 -0
- localstack/services/lambda_/packages.py +3 -4
- localstack/services/lambda_/provider.py +9 -26
- localstack/services/lambda_/provider_utils.py +1 -1
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
- localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
- localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_url.py +15 -15
- localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
- localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
- localstack/services/lambda_/runtimes.py +1 -3
- localstack/services/lambda_/urlrouter.py +14 -1
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +39 -22
- localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
- localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
- localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
- localstack/services/moto.py +5 -4
- localstack/services/opensearch/cluster.py +28 -20
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +27 -9
- localstack/services/opensearch/provider.py +15 -10
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
- localstack/services/opensearch/versions.py +57 -10
- localstack/services/plugins.py +37 -32
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
- localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
- localstack/services/route53/models.py +1 -3
- localstack/services/route53/provider.py +1 -2
- localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
- localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
- localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
- localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
- localstack/services/route53resolver/models.py +8 -10
- localstack/services/route53resolver/provider.py +12 -12
- localstack/services/s3/codec.py +2 -2
- localstack/services/s3/constants.py +5 -2
- localstack/services/s3/cors.py +8 -8
- localstack/services/s3/models.py +73 -73
- localstack/services/s3/notifications.py +74 -58
- localstack/services/s3/presigned_url.py +41 -59
- localstack/services/s3/provider.py +86 -29
- localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
- localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
- localstack/services/s3/storage/core.py +4 -3
- localstack/services/s3/storage/ephemeral.py +7 -6
- localstack/services/s3/utils.py +51 -31
- localstack/services/s3/validation.py +47 -33
- localstack/services/s3/website_hosting.py +9 -7
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
- localstack/services/secretsmanager/provider.py +10 -12
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
- localstack/services/ses/models.py +8 -1
- localstack/services/ses/provider.py +128 -55
- localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
- localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
- localstack/services/sns/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +9 -7
- localstack/services/sns/publisher.py +37 -23
- localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
- localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
- localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
- localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
- localstack/services/sns/v2/models.py +167 -0
- localstack/services/sns/v2/provider.py +867 -0
- localstack/services/sns/v2/utils.py +130 -0
- localstack/services/sqs/constants.py +2 -2
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +71 -36
- localstack/services/sqs/provider.py +56 -332
- localstack/services/sqs/query_api.py +8 -5
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +7 -5
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +123 -4
- localstack/services/ssm/provider.py +3 -4
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
- localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
- localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
- localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
- localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
- localstack/services/stepfunctions/asl/component/common/error_name/states_error_name_type.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
- localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
- localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
- localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +4 -4
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/program/program.py +9 -9
- localstack/services/stepfunctions/asl/component/program/states.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +12 -13
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +18 -18
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
- localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
- localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
- localstack/services/stepfunctions/asl/eval/environment.py +22 -24
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
- localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
- localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
- localstack/services/stepfunctions/asl/eval/states.py +12 -12
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
- localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
- localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
- localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py +2 -2
- localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
- localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
- localstack/services/stepfunctions/backend/activity.py +4 -4
- localstack/services/stepfunctions/backend/alias.py +8 -8
- localstack/services/stepfunctions/backend/execution.py +29 -30
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +28 -28
- localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
- localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
- localstack/services/stepfunctions/mocking/mock_config.py +9 -9
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/packages.py +14 -5
- localstack/services/stepfunctions/provider.py +34 -44
- localstack/services/stepfunctions/quotas.py +2 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
- localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
- localstack/services/stores.py +8 -8
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +8 -3
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +36 -23
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +68 -18
- localstack/testing/pytest/container.py +5 -5
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +188 -49
- localstack/testing/pytest/in_memory_localstack.py +1 -3
- localstack/testing/pytest/marking.py +42 -15
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
- localstack/testing/pytest/stepfunctions/utils.py +11 -10
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -4
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +8 -3
- localstack/testing/testselection/matching.py +2 -2
- localstack/testing/testselection/opt_out.py +1 -1
- localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
- localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
- localstack/testing/testselection/testselection.py +2 -2
- localstack/utils/analytics/cli.py +2 -3
- localstack/utils/analytics/client.py +5 -5
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +11 -18
- localstack/utils/analytics/metrics/registry.py +2 -2
- localstack/utils/analytics/publisher.py +4 -5
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +4 -4
- localstack/utils/archives.py +12 -12
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +26 -31
- localstack/utils/aws/aws_responses.py +21 -28
- localstack/utils/aws/aws_stack.py +7 -12
- localstack/utils/aws/dead_letter_queue.py +4 -9
- localstack/utils/aws/message_forwarding.py +8 -11
- localstack/utils/aws/request_context.py +5 -6
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +4 -4
- localstack/utils/batch_policy.py +4 -4
- localstack/utils/bootstrap.py +37 -30
- localstack/utils/catalog/catalog.py +139 -0
- localstack/utils/catalog/catalog_loader.py +119 -0
- localstack/utils/catalog/common.py +58 -0
- localstack/utils/catalog/plugins.py +28 -0
- localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
- localstack/utils/collections.py +33 -27
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +5 -6
- localstack/utils/container_utils/container_client.py +156 -160
- localstack/utils/container_utils/docker_cmd_client.py +97 -81
- localstack/utils/container_utils/docker_sdk_client.py +75 -72
- localstack/utils/crypto.py +12 -13
- localstack/utils/diagnose.py +11 -12
- localstack/utils/docker_utils.py +11 -7
- localstack/utils/files.py +34 -15
- localstack/utils/functions.py +5 -4
- localstack/utils/http.py +14 -14
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +21 -7
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +25 -17
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +15 -14
- localstack/utils/patch.py +14 -7
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +15 -14
- localstack/utils/scheduler.py +13 -12
- localstack/utils/server/tcp_proxy.py +2 -2
- localstack/utils/serving.py +3 -4
- localstack/utils/strings.py +15 -16
- localstack/utils/sync.py +126 -1
- localstack/utils/tagging.py +10 -8
- localstack/utils/testutil.py +17 -17
- localstack/utils/threads.py +3 -3
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xml.py +1 -1
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
- localstack/packages/terraform.py +0 -47
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
- localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
- localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
- localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
- localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
- /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
|
@@ -2,7 +2,8 @@ import abc
|
|
|
2
2
|
import json
|
|
3
3
|
import threading
|
|
4
4
|
import time
|
|
5
|
-
from
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from typing import Any, Final
|
|
6
7
|
|
|
7
8
|
from localstack.aws.api.stepfunctions import (
|
|
8
9
|
HistoryEventExecutionDataDetails,
|
|
@@ -67,7 +68,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
67
68
|
resource_runtime_part: ResourceRuntimePart,
|
|
68
69
|
normalised_parameters: dict,
|
|
69
70
|
state_credentials: StateCredentials,
|
|
70
|
-
) -> Callable[[],
|
|
71
|
+
) -> Callable[[], Any | None]:
|
|
71
72
|
raise RuntimeError(
|
|
72
73
|
f"Unsupported .sync callback procedure in resource {self.resource.resource_arn}"
|
|
73
74
|
)
|
|
@@ -78,7 +79,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
78
79
|
resource_runtime_part: ResourceRuntimePart,
|
|
79
80
|
normalised_parameters: dict,
|
|
80
81
|
state_credentials: StateCredentials,
|
|
81
|
-
) -> Callable[[],
|
|
82
|
+
) -> Callable[[], Any | None]:
|
|
82
83
|
raise RuntimeError(
|
|
83
84
|
f"Unsupported .sync2 callback procedure in resource {self.resource.resource_arn}"
|
|
84
85
|
)
|
|
@@ -88,9 +89,9 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
88
89
|
env: Environment,
|
|
89
90
|
timeout_seconds: int,
|
|
90
91
|
callback_endpoint: CallbackEndpoint,
|
|
91
|
-
heartbeat_endpoint:
|
|
92
|
+
heartbeat_endpoint: HeartbeatEndpoint | None,
|
|
92
93
|
) -> CallbackOutcome:
|
|
93
|
-
outcome:
|
|
94
|
+
outcome: CallbackOutcome | None
|
|
94
95
|
if heartbeat_endpoint is not None:
|
|
95
96
|
outcome = self._wait_for_task_token_heartbeat(
|
|
96
97
|
env, callback_endpoint, heartbeat_endpoint
|
|
@@ -104,12 +105,12 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
104
105
|
def _eval_sync(
|
|
105
106
|
self,
|
|
106
107
|
env: Environment,
|
|
107
|
-
sync_resolver: Callable[[],
|
|
108
|
-
timeout_seconds:
|
|
109
|
-
callback_endpoint:
|
|
110
|
-
heartbeat_endpoint:
|
|
108
|
+
sync_resolver: Callable[[], Any | None],
|
|
109
|
+
timeout_seconds: int | None,
|
|
110
|
+
callback_endpoint: CallbackEndpoint | None,
|
|
111
|
+
heartbeat_endpoint: HeartbeatEndpoint | None,
|
|
111
112
|
) -> CallbackOutcome | Any:
|
|
112
|
-
callback_output:
|
|
113
|
+
callback_output: CallbackOutcome | None = None
|
|
113
114
|
|
|
114
115
|
# Listen for WaitForTaskToken signals if an endpoint is provided.
|
|
115
116
|
if callback_endpoint is not None:
|
|
@@ -134,7 +135,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
134
135
|
# an exception in this thread will invalidate env, and therefore the worker thread.
|
|
135
136
|
# hence why here there are no explicit stopping logic for thread_wait_for_task_token.
|
|
136
137
|
|
|
137
|
-
sync_result:
|
|
138
|
+
sync_result: Any | None = None
|
|
138
139
|
while env.is_running():
|
|
139
140
|
sync_result = sync_resolver()
|
|
140
141
|
if callback_output or sync_result:
|
|
@@ -154,7 +155,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
154
155
|
task_output = env.stack.pop()
|
|
155
156
|
|
|
156
157
|
# Initialise the waitForTaskToken Callback endpoint for this task if supported.
|
|
157
|
-
callback_endpoint:
|
|
158
|
+
callback_endpoint: CallbackEndpoint | None = None
|
|
158
159
|
if ResourceCondition.WaitForTaskToken in self._supported_integration_patterns:
|
|
159
160
|
callback_id = env.states.context_object.context_object_data["Task"]["Token"]
|
|
160
161
|
callback_endpoint = env.callback_pool_manager.get(callback_id)
|
|
@@ -164,7 +165,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
164
165
|
timeout_seconds = env.stack.pop()
|
|
165
166
|
|
|
166
167
|
# Setup resources for heartbeat workloads if necessary.
|
|
167
|
-
heartbeat_endpoint:
|
|
168
|
+
heartbeat_endpoint: HeartbeatEndpoint | None = None
|
|
168
169
|
if self.heartbeat:
|
|
169
170
|
self.heartbeat.eval(env=env)
|
|
170
171
|
heartbeat_seconds = env.stack.pop()
|
|
@@ -240,7 +241,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
240
241
|
self,
|
|
241
242
|
timeout_seconds: int,
|
|
242
243
|
callback_endpoint: CallbackEndpoint,
|
|
243
|
-
) ->
|
|
244
|
+
) -> CallbackOutcome | None:
|
|
244
245
|
# Awaits a callback notification and returns the outcome received.
|
|
245
246
|
# If the operation times out or is interrupted it returns None.
|
|
246
247
|
|
|
@@ -249,7 +250,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
249
250
|
# discarded by the main process.
|
|
250
251
|
# Note: although this is the same timeout value, this can only decay strictly after the first timeout
|
|
251
252
|
# started as it is invoked strictly later.
|
|
252
|
-
outcome:
|
|
253
|
+
outcome: CallbackOutcome | None = callback_endpoint.wait(timeout=timeout_seconds)
|
|
253
254
|
return outcome
|
|
254
255
|
|
|
255
256
|
def _wait_for_task_token_heartbeat( # noqa
|
|
@@ -257,7 +258,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
257
258
|
env: Environment,
|
|
258
259
|
callback_endpoint: CallbackEndpoint,
|
|
259
260
|
heartbeat_endpoint: HeartbeatEndpoint,
|
|
260
|
-
) ->
|
|
261
|
+
) -> CallbackOutcome | None:
|
|
261
262
|
outcome = None
|
|
262
263
|
while (
|
|
263
264
|
env.is_running()
|
|
@@ -285,7 +286,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
285
286
|
self, env: Environment, ex: CallbackOutcomeFailureError
|
|
286
287
|
) -> FailureEvent:
|
|
287
288
|
callback_outcome_failure: CallbackOutcomeFailure = ex.callback_outcome_failure
|
|
288
|
-
error:
|
|
289
|
+
error: str | None = callback_outcome_failure.error
|
|
289
290
|
return FailureEvent(
|
|
290
291
|
env=env,
|
|
291
292
|
error_name=CustomErrorName(error_name=error),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -76,7 +76,7 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
class StateTaskServiceDynamoDB(StateTaskService):
|
|
79
|
-
def _get_supported_parameters(self) ->
|
|
79
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
80
80
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
81
81
|
|
|
82
82
|
@staticmethod
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
|
|
4
5
|
StateCredentials,
|
|
@@ -42,7 +43,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
42
43
|
def __init__(self):
|
|
43
44
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
44
45
|
|
|
45
|
-
def _get_supported_parameters(self) ->
|
|
46
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
46
47
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
47
48
|
|
|
48
49
|
def _before_eval_execution(
|
|
@@ -102,7 +103,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
102
103
|
resource_runtime_part: ResourceRuntimePart,
|
|
103
104
|
normalised_parameters: dict,
|
|
104
105
|
state_credentials: StateCredentials,
|
|
105
|
-
) -> Callable[[],
|
|
106
|
+
) -> Callable[[], Any | None]:
|
|
106
107
|
ecs_client = boto_client_for(
|
|
107
108
|
service="ecs",
|
|
108
109
|
region=resource_runtime_part.region,
|
|
@@ -112,7 +113,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
112
113
|
task_arn: str = submission_output["Tasks"][0]["TaskArn"]
|
|
113
114
|
cluster_arn: str = submission_output["Tasks"][0]["ClusterArn"]
|
|
114
115
|
|
|
115
|
-
def _sync_resolver() ->
|
|
116
|
+
def _sync_resolver() -> dict | None:
|
|
116
117
|
describe_tasks_output = ecs_client.describe_tasks(cluster=cluster_arn, tasks=[task_arn])
|
|
117
118
|
last_status: str = describe_tasks_output["tasks"][0]["lastStatus"]
|
|
118
119
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
|
5
5
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
@@ -33,9 +33,9 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {"putevents": {"Entr
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class SfnFailedEntryCountException(RuntimeError):
|
|
36
|
-
cause: Final[
|
|
36
|
+
cause: Final[dict | None]
|
|
37
37
|
|
|
38
|
-
def __init__(self, cause:
|
|
38
|
+
def __init__(self, cause: dict | None):
|
|
39
39
|
super().__init__(json.dumps(cause))
|
|
40
40
|
self.cause = cause
|
|
41
41
|
|
|
@@ -44,7 +44,7 @@ class StateTaskServiceEvents(StateTaskServiceCallback):
|
|
|
44
44
|
def __init__(self):
|
|
45
45
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
46
46
|
|
|
47
|
-
def _get_supported_parameters(self) ->
|
|
47
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
48
48
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
49
49
|
|
|
50
50
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
import boto3
|
|
4
5
|
from botocore.exceptions import ClientError
|
|
@@ -73,7 +74,7 @@ _API_ACTION_HANDLER_TYPE = Callable[
|
|
|
73
74
|
]
|
|
74
75
|
# The type of (sync)handler builder function for StateTaskServiceGlue objects.
|
|
75
76
|
_API_ACTION_HANDLER_BUILDER_TYPE = Callable[
|
|
76
|
-
[Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[],
|
|
77
|
+
[Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[], Any | None]
|
|
77
78
|
]
|
|
78
79
|
|
|
79
80
|
|
|
@@ -81,7 +82,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
81
82
|
def __init__(self):
|
|
82
83
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
83
84
|
|
|
84
|
-
def _get_supported_parameters(self) ->
|
|
85
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
85
86
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
86
87
|
|
|
87
88
|
def _get_api_action_handler(self) -> _API_ACTION_HANDLER_TYPE:
|
|
@@ -174,7 +175,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
174
175
|
resource_runtime_part: ResourceRuntimePart,
|
|
175
176
|
normalised_parameters: dict,
|
|
176
177
|
state_credentials: StateCredentials,
|
|
177
|
-
) -> Callable[[],
|
|
178
|
+
) -> Callable[[], Any | None]:
|
|
178
179
|
# Poll the job run state from glue, using GetJobRun until the job has terminated. Hence, append the output
|
|
179
180
|
# of GetJobRun to the state.
|
|
180
181
|
|
|
@@ -188,7 +189,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
188
189
|
resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
|
|
189
190
|
)
|
|
190
191
|
|
|
191
|
-
def _sync_resolver() ->
|
|
192
|
+
def _sync_resolver() -> Any | None:
|
|
192
193
|
# Sample GetJobRun until completion.
|
|
193
194
|
get_job_run_response: dict = glue_client.get_job_run(JobName=job_name, RunId=job_run_id)
|
|
194
195
|
job_run: dict = get_job_run_response["JobRun"]
|
|
@@ -232,7 +233,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
232
233
|
resource_runtime_part: ResourceRuntimePart,
|
|
233
234
|
normalised_parameters: dict,
|
|
234
235
|
state_credentials: StateCredentials,
|
|
235
|
-
) -> Callable[[],
|
|
236
|
+
) -> Callable[[], Any | None]:
|
|
236
237
|
sync_resolver_builder = self._get_api_action_sync_builder_handler()
|
|
237
238
|
sync_resolver = sync_resolver_builder(
|
|
238
239
|
env, resource_runtime_part, normalised_parameters, state_credentials
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from botocore.exceptions import ClientError
|
|
6
6
|
|
|
@@ -50,7 +50,7 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
|
|
|
50
50
|
def __init__(self):
|
|
51
51
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
52
52
|
|
|
53
|
-
def _get_supported_parameters(self) ->
|
|
53
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
54
54
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
55
55
|
|
|
56
56
|
@staticmethod
|
|
@@ -105,8 +105,8 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
|
|
|
105
105
|
def _normalise_parameters(
|
|
106
106
|
self,
|
|
107
107
|
parameters: dict,
|
|
108
|
-
boto_service_name:
|
|
109
|
-
service_action_name:
|
|
108
|
+
boto_service_name: str | None = None,
|
|
109
|
+
service_action_name: str | None = None,
|
|
110
110
|
) -> None:
|
|
111
111
|
# Run Payload value casting before normalisation.
|
|
112
112
|
if "Payload" in parameters:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from typing import Any, Final
|
|
3
4
|
|
|
4
5
|
from botocore.exceptions import ClientError
|
|
5
6
|
|
|
@@ -52,7 +53,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
52
53
|
def __init__(self):
|
|
53
54
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
54
55
|
|
|
55
|
-
def _get_supported_parameters(self) ->
|
|
56
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
56
57
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
57
58
|
|
|
58
59
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -91,8 +92,8 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
91
92
|
def _normalise_parameters(
|
|
92
93
|
self,
|
|
93
94
|
parameters: dict,
|
|
94
|
-
boto_service_name:
|
|
95
|
-
service_action_name:
|
|
95
|
+
boto_service_name: str | None = None,
|
|
96
|
+
service_action_name: str | None = None,
|
|
96
97
|
) -> None:
|
|
97
98
|
if service_action_name is None:
|
|
98
99
|
if self._get_boto_service_action() == "start_execution":
|
|
@@ -115,7 +116,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
115
116
|
resource_runtime_part: ResourceRuntimePart,
|
|
116
117
|
normalised_parameters: dict,
|
|
117
118
|
state_credentials: StateCredentials,
|
|
118
|
-
) -> Callable[[],
|
|
119
|
+
) -> Callable[[], Any | None]:
|
|
119
120
|
sfn_client = boto_client_for(
|
|
120
121
|
service="stepfunctions",
|
|
121
122
|
region=resource_runtime_part.region,
|
|
@@ -124,7 +125,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
124
125
|
submission_output: dict = env.stack.pop()
|
|
125
126
|
execution_arn: str = submission_output["ExecutionArn"]
|
|
126
127
|
|
|
127
|
-
def _sync_resolver() ->
|
|
128
|
+
def _sync_resolver() -> Any | None:
|
|
128
129
|
describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
|
|
129
130
|
describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
|
|
130
131
|
DescribeExecutionOutput, describe_execution_output
|
|
@@ -176,7 +177,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
176
177
|
resource_runtime_part: ResourceRuntimePart,
|
|
177
178
|
normalised_parameters: dict,
|
|
178
179
|
state_credentials: StateCredentials,
|
|
179
|
-
) -> Callable[[],
|
|
180
|
+
) -> Callable[[], Any | None]:
|
|
180
181
|
sfn_client = boto_client_for(
|
|
181
182
|
region=resource_runtime_part.region,
|
|
182
183
|
service="stepfunctions",
|
|
@@ -185,7 +186,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
185
186
|
submission_output: dict = env.stack.pop()
|
|
186
187
|
execution_arn: str = submission_output["ExecutionArn"]
|
|
187
188
|
|
|
188
|
-
def _sync2_resolver() ->
|
|
189
|
+
def _sync2_resolver() -> Any | None:
|
|
189
190
|
describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
|
|
190
191
|
describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
|
|
191
192
|
DescribeExecutionOutput, describe_execution_output
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -46,7 +46,7 @@ class StateTaskServiceSns(StateTaskServiceCallback):
|
|
|
46
46
|
def __init__(self):
|
|
47
47
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
48
48
|
|
|
49
|
-
def _get_supported_parameters(self) ->
|
|
49
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
50
50
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
51
51
|
|
|
52
52
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any, Final
|
|
1
|
+
from typing import Any, Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -45,7 +45,7 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
|
|
|
45
45
|
def __init__(self):
|
|
46
46
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
47
47
|
|
|
48
|
-
def _get_supported_parameters(self) ->
|
|
48
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
49
49
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
50
50
|
|
|
51
51
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -70,8 +70,8 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
|
|
|
70
70
|
def _normalise_response(
|
|
71
71
|
self,
|
|
72
72
|
response: Any,
|
|
73
|
-
boto_service_name:
|
|
74
|
-
service_action_name:
|
|
73
|
+
boto_service_name: str | None = None,
|
|
74
|
+
service_action_name: str | None = None,
|
|
75
75
|
) -> None:
|
|
76
76
|
super()._normalise_response(
|
|
77
77
|
response=response,
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py
CHANGED
|
@@ -31,17 +31,17 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
|
|
|
31
31
|
|
|
32
32
|
class StateTask(ExecutionState, abc.ABC):
|
|
33
33
|
resource: Resource
|
|
34
|
-
parargs:
|
|
35
|
-
credentials:
|
|
34
|
+
parargs: Parargs | None
|
|
35
|
+
credentials: Credentials | None
|
|
36
36
|
|
|
37
37
|
def __init__(self):
|
|
38
|
-
super(
|
|
38
|
+
super().__init__(
|
|
39
39
|
state_entered_event_type=HistoryEventType.TaskStateEntered,
|
|
40
40
|
state_exited_event_type=HistoryEventType.TaskStateExited,
|
|
41
41
|
)
|
|
42
42
|
|
|
43
43
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
44
|
-
super(
|
|
44
|
+
super().from_state_props(state_props)
|
|
45
45
|
self.resource = state_props.get(Resource)
|
|
46
46
|
self.parargs = state_props.get(Parargs)
|
|
47
47
|
self.credentials = state_props.get(Credentials)
|
|
@@ -51,7 +51,7 @@ class StateTask(ExecutionState, abc.ABC):
|
|
|
51
51
|
|
|
52
52
|
def _eval_parameters(self, env: Environment) -> dict:
|
|
53
53
|
# Eval raw parameters.
|
|
54
|
-
parameters =
|
|
54
|
+
parameters = {}
|
|
55
55
|
if self.parargs is not None:
|
|
56
56
|
self.parargs.eval(env=env)
|
|
57
57
|
parameters = env.stack.pop()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from botocore.exceptions import ClientError
|
|
6
6
|
|
|
@@ -94,7 +94,7 @@ class StateTaskLambda(StateTask):
|
|
|
94
94
|
),
|
|
95
95
|
)
|
|
96
96
|
|
|
97
|
-
def _verify_size_quota(self, env: Environment, value:
|
|
97
|
+
def _verify_size_quota(self, env: Environment, value: str | Any) -> None:
|
|
98
98
|
is_within: bool = is_within_size_quota(value=value)
|
|
99
99
|
if is_within:
|
|
100
100
|
return
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
|
4
2
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
5
3
|
CustomErrorName,
|
|
@@ -22,11 +20,11 @@ class StateFail(CommonStateField):
|
|
|
22
20
|
state_entered_event_type=HistoryEventType.FailStateEntered,
|
|
23
21
|
state_exited_event_type=None,
|
|
24
22
|
)
|
|
25
|
-
self.cause:
|
|
26
|
-
self.error:
|
|
23
|
+
self.cause: CauseDecl | None = None
|
|
24
|
+
self.error: ErrorDecl | None = None
|
|
27
25
|
|
|
28
26
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
29
|
-
super(
|
|
27
|
+
super().from_state_props(state_props)
|
|
30
28
|
self.cause = state_props.get(CauseDecl)
|
|
31
29
|
self.error = state_props.get(ErrorDecl)
|
|
32
30
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.stepfunctions import (
|
|
4
2
|
HistoryEventType,
|
|
5
3
|
)
|
|
@@ -13,7 +11,7 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
|
13
11
|
|
|
14
12
|
class StatePass(CommonStateField):
|
|
15
13
|
def __init__(self):
|
|
16
|
-
super(
|
|
14
|
+
super().__init__(
|
|
17
15
|
state_entered_event_type=HistoryEventType.PassStateEntered,
|
|
18
16
|
state_exited_event_type=HistoryEventType.PassStateExited,
|
|
19
17
|
)
|
|
@@ -21,20 +19,20 @@ class StatePass(CommonStateField):
|
|
|
21
19
|
# Result (Optional)
|
|
22
20
|
# Refers to the output of a virtual state_task that is passed on to the next state. If you include the ResultPath
|
|
23
21
|
# field in your state machine definition, Result is placed as specified by ResultPath and passed on to the
|
|
24
|
-
self.result:
|
|
22
|
+
self.result: Result | None = None
|
|
25
23
|
|
|
26
24
|
# ResultPath (Optional)
|
|
27
25
|
# Specifies where to place the output (relative to the input) of the virtual state_task specified in Result. The input
|
|
28
26
|
# is further filtered as specified by the OutputPath field (if present) before being used as the state's output.
|
|
29
|
-
self.result_path:
|
|
27
|
+
self.result_path: ResultPath | None = None
|
|
30
28
|
|
|
31
29
|
# Parameters (Optional)
|
|
32
30
|
# Creates a collection of key-value pairs that will be passed as input. You can specify Parameters as a static
|
|
33
31
|
# value or select from the input using a path.
|
|
34
|
-
self.parameters:
|
|
32
|
+
self.parameters: Parameters | None = None
|
|
35
33
|
|
|
36
34
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
37
|
-
super(
|
|
35
|
+
super().from_state_props(state_props)
|
|
38
36
|
self.result = state_props.get(Result)
|
|
39
37
|
self.result_path = state_props.get(ResultPath) or ResultPath(
|
|
40
38
|
result_path_src=ResultPath.DEFAULT_PATH
|
|
@@ -17,7 +17,7 @@ class StateSucceed(CommonStateField):
|
|
|
17
17
|
)
|
|
18
18
|
|
|
19
19
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
20
|
-
super(
|
|
20
|
+
super().from_state_props(state_props)
|
|
21
21
|
# TODO: assert all other fields are undefined?
|
|
22
22
|
|
|
23
23
|
# No Next or End field: Succeed states are terminal states.
|
|
@@ -19,7 +19,7 @@ class StateWait(CommonStateField):
|
|
|
19
19
|
)
|
|
20
20
|
|
|
21
21
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
22
|
-
super(
|
|
22
|
+
super().from_state_props(state_props)
|
|
23
23
|
self.wait_function = state_props.get(
|
|
24
24
|
typ=WaitFunction,
|
|
25
25
|
raise_on_missing=ValueError(f"Undefined WaitFunction for StateWait: '{self}'."),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import re
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, HistoryEventType
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
|
|
@@ -47,7 +47,7 @@ class Timestamp(WaitFunction):
|
|
|
47
47
|
return re.match(TIMESTAMP_PATTERN, timestamp) is not None
|
|
48
48
|
|
|
49
49
|
@staticmethod
|
|
50
|
-
def _from_timestamp_string(timestamp: str) ->
|
|
50
|
+
def _from_timestamp_string(timestamp: str) -> datetime.datetime | None:
|
|
51
51
|
if not Timestamp._is_valid_timestamp_pattern(timestamp):
|
|
52
52
|
return None
|
|
53
53
|
try:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
from collections import OrderedDict
|
|
3
3
|
from threading import Event, Lock
|
|
4
|
-
from typing import Final
|
|
4
|
+
from typing import Final
|
|
5
5
|
|
|
6
6
|
from localstack.aws.api.stepfunctions import ActivityDoesNotExist, Arn
|
|
7
7
|
from localstack.services.stepfunctions.backend.activity import Activity, ActivityTask
|
|
@@ -26,10 +26,10 @@ class CallbackOutcomeSuccess(CallbackOutcome):
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class CallbackOutcomeFailure(CallbackOutcome):
|
|
29
|
-
error: Final[
|
|
30
|
-
cause: Final[
|
|
29
|
+
error: Final[str | None]
|
|
30
|
+
cause: Final[str | None]
|
|
31
31
|
|
|
32
|
-
def __init__(self, callback_id: CallbackId, error:
|
|
32
|
+
def __init__(self, callback_id: CallbackId, error: str | None, cause: str | None):
|
|
33
33
|
super().__init__(callback_id=callback_id)
|
|
34
34
|
self.error = error
|
|
35
35
|
self.cause = cause
|
|
@@ -85,20 +85,20 @@ class HeartbeatTimedOut(CallbackConsumerError):
|
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
class ActivityTaskStartOutcome:
|
|
88
|
-
worker_name:
|
|
88
|
+
worker_name: str | None
|
|
89
89
|
|
|
90
|
-
def __init__(self, worker_name:
|
|
90
|
+
def __init__(self, worker_name: str | None = None):
|
|
91
91
|
self.worker_name = worker_name
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
class ActivityTaskStartEndpoint:
|
|
95
95
|
_next_activity_task_start_event: Final[Event]
|
|
96
|
-
_outcome:
|
|
96
|
+
_outcome: ActivityTaskStartOutcome | None
|
|
97
97
|
|
|
98
98
|
def __init__(self):
|
|
99
99
|
self._next_activity_task_start_event = Event()
|
|
100
100
|
|
|
101
|
-
def wait(self, timeout_seconds: float) ->
|
|
101
|
+
def wait(self, timeout_seconds: float) -> ActivityTaskStartOutcome | None:
|
|
102
102
|
self._next_activity_task_start_event.wait(timeout=timeout_seconds)
|
|
103
103
|
return self._outcome
|
|
104
104
|
|
|
@@ -110,9 +110,9 @@ class ActivityTaskStartEndpoint:
|
|
|
110
110
|
class CallbackEndpoint:
|
|
111
111
|
callback_id: Final[CallbackId]
|
|
112
112
|
_notify_event: Final[Event]
|
|
113
|
-
_outcome:
|
|
114
|
-
consumer_error:
|
|
115
|
-
_heartbeat_endpoint:
|
|
113
|
+
_outcome: CallbackOutcome | None
|
|
114
|
+
consumer_error: CallbackConsumerError | None
|
|
115
|
+
_heartbeat_endpoint: HeartbeatEndpoint | None
|
|
116
116
|
|
|
117
117
|
def __init__(self, callback_id: CallbackId):
|
|
118
118
|
self.callback_id = callback_id
|
|
@@ -144,11 +144,11 @@ class CallbackEndpoint:
|
|
|
144
144
|
self._heartbeat_endpoint.notify()
|
|
145
145
|
return True
|
|
146
146
|
|
|
147
|
-
def wait(self, timeout:
|
|
147
|
+
def wait(self, timeout: float | None = None) -> CallbackOutcome | None:
|
|
148
148
|
self._notify_event.wait(timeout=timeout)
|
|
149
149
|
return self._outcome
|
|
150
150
|
|
|
151
|
-
def get_outcome(self) ->
|
|
151
|
+
def get_outcome(self) -> CallbackOutcome | None:
|
|
152
152
|
return self._outcome
|
|
153
153
|
|
|
154
154
|
def report(self, consumer_error: CallbackConsumerError) -> None:
|
|
@@ -170,7 +170,7 @@ class ActivityCallbackEndpoint(CallbackEndpoint):
|
|
|
170
170
|
def get_activity_task_start_endpoint(self) -> ActivityTaskStartEndpoint:
|
|
171
171
|
return self._activity_task_start_endpoint
|
|
172
172
|
|
|
173
|
-
def notify_activity_task_start(self, worker_name:
|
|
173
|
+
def notify_activity_task_start(self, worker_name: str | None) -> None:
|
|
174
174
|
self._activity_task_start_endpoint.notify(ActivityTaskStartOutcome(worker_name=worker_name))
|
|
175
175
|
|
|
176
176
|
|
|
@@ -196,7 +196,7 @@ class CallbackPoolManager:
|
|
|
196
196
|
self._activity_store = activity_store
|
|
197
197
|
self._pool = OrderedDict()
|
|
198
198
|
|
|
199
|
-
def get(self, callback_id: CallbackId) ->
|
|
199
|
+
def get(self, callback_id: CallbackId) -> CallbackEndpoint | None:
|
|
200
200
|
return self._pool.get(callback_id)
|
|
201
201
|
|
|
202
202
|
def add(self, callback_id: CallbackId) -> CallbackEndpoint:
|
|
@@ -212,7 +212,7 @@ class CallbackPoolManager:
|
|
|
212
212
|
if callback_id in self._pool:
|
|
213
213
|
raise ValueError("Duplicate callback token id value.")
|
|
214
214
|
|
|
215
|
-
maybe_activity:
|
|
215
|
+
maybe_activity: Activity | None = self._activity_store.get(activity_arn)
|
|
216
216
|
if maybe_activity is None:
|
|
217
217
|
raise ActivityDoesNotExist()
|
|
218
218
|
|
|
@@ -232,7 +232,7 @@ class CallbackPoolManager:
|
|
|
232
232
|
if callback_endpoint is None:
|
|
233
233
|
return False
|
|
234
234
|
|
|
235
|
-
consumer_error:
|
|
235
|
+
consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
|
|
236
236
|
if consumer_error is not None:
|
|
237
237
|
raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
|
|
238
238
|
|
|
@@ -244,7 +244,7 @@ class CallbackPoolManager:
|
|
|
244
244
|
if callback_endpoint is None:
|
|
245
245
|
return False
|
|
246
246
|
|
|
247
|
-
consumer_error:
|
|
247
|
+
consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
|
|
248
248
|
if consumer_error is not None:
|
|
249
249
|
raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
|
|
250
250
|
|