localstack-core 4.6.1.dev74__py3-none-any.whl → 4.10.1.dev7__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.
Potentially problematic release.
This version of localstack-core might be problematic. Click here for more details.
- 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 +1524 -64
- 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 +13 -0
- 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 +40 -31
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +85 -5
- 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 +286 -139
- 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 +161 -31
- 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 +8 -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 +31 -22
- localstack/services/cloudformation/v2/entities.py +65 -92
- localstack/services/cloudformation/v2/provider.py +553 -128
- 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 +49 -8
- 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 +48 -7
- 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 +17 -11
- 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 +4 -4
- 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 +4 -4
- 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 +22 -60
- 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 -55
- 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 +11 -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.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/METADATA +18 -14
- {localstack_core-4.6.1.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/RECORD +663 -656
- {localstack_core-4.6.1.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev7.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.dev74.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.dev74.data → localstack_core-4.10.1.dev7.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev74.data → localstack_core-4.10.1.dev7.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev74.data → localstack_core-4.10.1.dev7.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev74.dist-info → localstack_core-4.10.1.dev7.dist-info}/top_level.txt +0 -0
|
@@ -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:
|
|
36
|
+
parameters: Parameters | None,
|
|
39
37
|
map_run_record: MapRunRecord,
|
|
40
|
-
item_selector:
|
|
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:
|
|
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:
|
|
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
|
|
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[
|
|
21
|
-
_item_selector: Final[
|
|
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:
|
|
29
|
-
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
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import copy
|
|
2
2
|
import logging
|
|
3
3
|
import threading
|
|
4
|
-
from typing import Any, Final
|
|
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[
|
|
16
|
-
job_output:
|
|
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:
|
|
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:
|
|
27
|
+
job_output: Any | None
|
|
28
28
|
|
|
29
|
-
def __init__(self, job_index: int, job_output:
|
|
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:
|
|
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) ->
|
|
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) ->
|
|
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
|
|
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,
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py
CHANGED
|
@@ -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,30 +98,30 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
|
|
|
99
98
|
|
|
100
99
|
|
|
101
100
|
class StateMap(ExecutionState):
|
|
102
|
-
items:
|
|
103
|
-
items_path:
|
|
101
|
+
items: Items | None
|
|
102
|
+
items_path: ItemsPath | None
|
|
104
103
|
iteration_component: IterationComponent
|
|
105
|
-
item_reader:
|
|
106
|
-
item_selector:
|
|
107
|
-
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:
|
|
110
|
+
result_path: ResultPath | None
|
|
112
111
|
result_selector: ResultSelector
|
|
113
|
-
retry:
|
|
114
|
-
catch:
|
|
115
|
-
label:
|
|
116
|
-
result_writer:
|
|
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
|
-
super(
|
|
118
|
+
super().__init__(
|
|
120
119
|
state_entered_event_type=HistoryEventType.MapStateEntered,
|
|
121
120
|
state_exited_event_type=HistoryEventType.MapStateExited,
|
|
122
121
|
)
|
|
123
122
|
|
|
124
123
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
125
|
-
super(
|
|
124
|
+
super().from_state_props(state_props)
|
|
126
125
|
if self._is_language_query_jsonpath():
|
|
127
126
|
self.items = None
|
|
128
127
|
self.items_path = state_props.get(ItemsPath) or ItemsPath(
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
import logging
|
|
3
3
|
import threading
|
|
4
|
-
from typing import Final
|
|
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:
|
|
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:
|
|
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:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import threading
|
|
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.custom_error_name import (
|
|
@@ -26,7 +26,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
|
|
|
26
26
|
_termination_event: Final[threading.Event]
|
|
27
27
|
_active_workers_num: int
|
|
28
28
|
|
|
29
|
-
_terminated_with_error:
|
|
29
|
+
_terminated_with_error: ExecutionFailedEventDetails | None
|
|
30
30
|
|
|
31
31
|
def __init__(self, workers_num: int):
|
|
32
32
|
self._mutex = threading.Lock()
|
|
@@ -42,7 +42,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
|
|
|
42
42
|
end_program_state: ProgramState = env.program_state()
|
|
43
43
|
if isinstance(end_program_state, ProgramError):
|
|
44
44
|
self._terminated_with_error = select_from_typed_dict(
|
|
45
|
-
typed_dict=ExecutionFailedEventDetails, obj=end_program_state.error or
|
|
45
|
+
typed_dict=ExecutionFailedEventDetails, obj=end_program_state.error or {}
|
|
46
46
|
)
|
|
47
47
|
self._termination_event.set()
|
|
48
48
|
else:
|
|
@@ -53,7 +53,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
|
|
|
53
53
|
def wait(self):
|
|
54
54
|
self._termination_event.wait()
|
|
55
55
|
|
|
56
|
-
def get_exit_event_details(self) ->
|
|
56
|
+
def get_exit_event_details(self) -> ExecutionFailedEventDetails | None:
|
|
57
57
|
return self._terminated_with_error
|
|
58
58
|
|
|
59
59
|
|
|
@@ -67,7 +67,7 @@ class BranchesDecl(EvalComponent):
|
|
|
67
67
|
|
|
68
68
|
branch_worker_pool = BranchWorkerPool(workers_num=len(self.programs))
|
|
69
69
|
|
|
70
|
-
branch_workers: list[BranchWorker] =
|
|
70
|
+
branch_workers: list[BranchWorker] = []
|
|
71
71
|
for program in self.programs:
|
|
72
72
|
# Environment frame for this sub process.
|
|
73
73
|
env_frame: Environment = env.open_inner_frame()
|
|
@@ -84,7 +84,7 @@ class BranchesDecl(EvalComponent):
|
|
|
84
84
|
branch_worker_pool.wait()
|
|
85
85
|
|
|
86
86
|
# Propagate exception if parallel task failed.
|
|
87
|
-
exit_event_details:
|
|
87
|
+
exit_event_details: ExecutionFailedEventDetails | None = (
|
|
88
88
|
branch_worker_pool.get_exit_event_details()
|
|
89
89
|
)
|
|
90
90
|
if exit_event_details is not None:
|
|
@@ -103,7 +103,7 @@ class BranchesDecl(EvalComponent):
|
|
|
103
103
|
)
|
|
104
104
|
|
|
105
105
|
# Collect the results and return.
|
|
106
|
-
result_list =
|
|
106
|
+
result_list = []
|
|
107
107
|
|
|
108
108
|
for worker in branch_workers:
|
|
109
109
|
env_frame = worker.env
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import copy
|
|
2
|
-
from typing import Optional
|
|
3
2
|
|
|
4
3
|
from localstack.aws.api.stepfunctions import HistoryEventType
|
|
5
4
|
from localstack.services.stepfunctions.asl.component.common.catch.catch_outcome import CatchOutcome
|
|
@@ -25,7 +24,7 @@ class StateParallel(ExecutionState):
|
|
|
25
24
|
# machine object must have fields named States and StartAt, whose meanings are exactly
|
|
26
25
|
# like those in the top level of a state machine.
|
|
27
26
|
branches: BranchesDecl
|
|
28
|
-
parargs:
|
|
27
|
+
parargs: Parargs | None
|
|
29
28
|
|
|
30
29
|
def __init__(self):
|
|
31
30
|
super().__init__(
|
|
@@ -34,7 +33,7 @@ class StateParallel(ExecutionState):
|
|
|
34
33
|
)
|
|
35
34
|
|
|
36
35
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
37
|
-
super(
|
|
36
|
+
super().from_state_props(state_props)
|
|
38
37
|
self.branches = state_props.get(
|
|
39
38
|
typ=BranchesDecl,
|
|
40
39
|
raise_on_missing=ValueError(f"Missing Branches definition in props '{state_props}'."),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from json import JSONDecodeError
|
|
3
|
-
from typing import IO, Any, Final
|
|
3
|
+
from typing import IO, Any, Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.lambda_ import InvocationResponse
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
|
|
@@ -18,15 +18,15 @@ from localstack.utils.strings import to_bytes
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class LambdaFunctionErrorException(Exception):
|
|
21
|
-
function_error: Final[
|
|
21
|
+
function_error: Final[str | None]
|
|
22
22
|
payload: Final[str]
|
|
23
23
|
|
|
24
|
-
def __init__(self, function_error:
|
|
24
|
+
def __init__(self, function_error: str | None, payload: str):
|
|
25
25
|
self.function_error = function_error
|
|
26
26
|
self.payload = payload
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def _from_payload(payload_streaming_body: IO[bytes]) ->
|
|
29
|
+
def _from_payload(payload_streaming_body: IO[bytes]) -> Any | str:
|
|
30
30
|
"""
|
|
31
31
|
This method extracts the lambda payload. The payload may be a string or a JSON stringified object.
|
|
32
32
|
In the first case, this function converts the output into a UTF-8 string, otherwise it parses the
|
|
@@ -75,7 +75,7 @@ def execute_lambda_function_integration(
|
|
|
75
75
|
parameters=parameters, region=region, state_credentials=state_credentials
|
|
76
76
|
)
|
|
77
77
|
|
|
78
|
-
function_error:
|
|
78
|
+
function_error: str | None = invocation_response.get("FunctionError")
|
|
79
79
|
if function_error:
|
|
80
80
|
payload_json = invocation_response["Payload"]
|
|
81
81
|
payload_str = json.dumps(payload_json, separators=(",", ":"))
|
|
@@ -85,12 +85,12 @@ def execute_lambda_function_integration(
|
|
|
85
85
|
env.stack.append(response)
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
def to_payload_type(payload: Any) ->
|
|
88
|
+
def to_payload_type(payload: Any) -> bytes | None:
|
|
89
89
|
if isinstance(payload, bytes):
|
|
90
90
|
return payload
|
|
91
91
|
|
|
92
92
|
if payload is None:
|
|
93
|
-
str_value = to_json_str(
|
|
93
|
+
str_value = to_json_str({})
|
|
94
94
|
elif isinstance(payload, str):
|
|
95
95
|
try:
|
|
96
96
|
json.loads(payload)
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
from itertools import takewhile
|
|
5
|
-
from typing import Final
|
|
5
|
+
from typing import Final
|
|
6
6
|
|
|
7
7
|
from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
|
|
8
8
|
from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
@@ -33,7 +33,7 @@ class ResourceARN:
|
|
|
33
33
|
account: str,
|
|
34
34
|
task_type: str,
|
|
35
35
|
name: str,
|
|
36
|
-
option:
|
|
36
|
+
option: str | None,
|
|
37
37
|
):
|
|
38
38
|
self.arn = arn
|
|
39
39
|
self.partition = partition
|
|
@@ -137,7 +137,7 @@ class ServiceResource(Resource):
|
|
|
137
137
|
service_name: Final[str]
|
|
138
138
|
api_name: Final[str]
|
|
139
139
|
api_action: Final[str]
|
|
140
|
-
condition: Final[
|
|
140
|
+
condition: Final[str | None]
|
|
141
141
|
|
|
142
142
|
def __init__(self, resource_arn: ResourceARN):
|
|
143
143
|
super().__init__(resource_arn=resource_arn)
|
|
@@ -4,7 +4,7 @@ import abc
|
|
|
4
4
|
import copy
|
|
5
5
|
import json
|
|
6
6
|
import logging
|
|
7
|
-
from typing import Any, Final
|
|
7
|
+
from typing import Any, Final
|
|
8
8
|
|
|
9
9
|
from botocore.model import ListShape, OperationModel, Shape, StringShape, StructureShape
|
|
10
10
|
from botocore.response import StreamingBody
|
|
@@ -147,8 +147,8 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
147
147
|
parameters_bind_keys: list[str] = list(parameters.keys())
|
|
148
148
|
for parameter_key in parameters_bind_keys:
|
|
149
149
|
norm_parameter_key = camel_to_snake_case(parameter_key)
|
|
150
|
-
norm_member_bind:
|
|
151
|
-
|
|
150
|
+
norm_member_bind: tuple[str, StructureShape | None] | None = norm_member_binds.get(
|
|
151
|
+
norm_parameter_key
|
|
152
152
|
)
|
|
153
153
|
if norm_member_bind is not None:
|
|
154
154
|
norm_member_bind_key, norm_member_bind_shape = norm_member_bind
|
|
@@ -203,19 +203,19 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
203
203
|
|
|
204
204
|
response[norm_response_key] = response_value
|
|
205
205
|
|
|
206
|
-
def _get_boto_service_name(self, boto_service_name:
|
|
206
|
+
def _get_boto_service_name(self, boto_service_name: str | None = None) -> str:
|
|
207
207
|
api_name = boto_service_name or self.resource.api_name
|
|
208
208
|
return self._SERVICE_NAME_SFN_TO_BOTO_OVERRIDES.get(api_name, api_name)
|
|
209
209
|
|
|
210
|
-
def _get_boto_service_action(self, service_action_name:
|
|
210
|
+
def _get_boto_service_action(self, service_action_name: str | None = None) -> str:
|
|
211
211
|
api_action = service_action_name or self.resource.api_action
|
|
212
212
|
return camel_to_snake_case(api_action)
|
|
213
213
|
|
|
214
214
|
def _normalise_parameters(
|
|
215
215
|
self,
|
|
216
216
|
parameters: dict,
|
|
217
|
-
boto_service_name:
|
|
218
|
-
service_action_name:
|
|
217
|
+
boto_service_name: str | None = None,
|
|
218
|
+
service_action_name: str | None = None,
|
|
219
219
|
) -> None:
|
|
220
220
|
boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
|
|
221
221
|
service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
|
|
@@ -228,8 +228,8 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
228
228
|
def _normalise_response(
|
|
229
229
|
self,
|
|
230
230
|
response: Any,
|
|
231
|
-
boto_service_name:
|
|
232
|
-
service_action_name:
|
|
231
|
+
boto_service_name: str | None = None,
|
|
232
|
+
service_action_name: str | None = None,
|
|
233
233
|
) -> None:
|
|
234
234
|
boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
|
|
235
235
|
service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
|
|
@@ -239,7 +239,7 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
239
239
|
if output_shape is not None:
|
|
240
240
|
self._from_boto_response(response, output_shape) # noqa
|
|
241
241
|
|
|
242
|
-
def _verify_size_quota(self, env: Environment, value:
|
|
242
|
+
def _verify_size_quota(self, env: Environment, value: str | json) -> None:
|
|
243
243
|
is_within: bool = is_within_size_quota(value)
|
|
244
244
|
if is_within:
|
|
245
245
|
return
|
|
@@ -4,7 +4,7 @@ import http
|
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
6
|
from json import JSONDecodeError
|
|
7
|
-
from typing import Any, Final,
|
|
7
|
+
from typing import Any, Final, TypedDict
|
|
8
8
|
from urllib.parse import urlencode, urljoin, urlparse
|
|
9
9
|
|
|
10
10
|
import requests
|
|
@@ -76,13 +76,13 @@ class AuthType(str):
|
|
|
76
76
|
class TaskParameters(TypedDict):
|
|
77
77
|
ApiEndpoint: ApiEndpoint
|
|
78
78
|
Method: Method
|
|
79
|
-
Headers:
|
|
80
|
-
Stage:
|
|
81
|
-
Path:
|
|
82
|
-
QueryParameters:
|
|
83
|
-
RequestBody:
|
|
84
|
-
AllowNullValues:
|
|
85
|
-
AuthType:
|
|
79
|
+
Headers: Headers | None
|
|
80
|
+
Stage: Stage | None
|
|
81
|
+
Path: Path | None
|
|
82
|
+
QueryParameters: QueryParameters | None
|
|
83
|
+
RequestBody: RequestBody | None
|
|
84
|
+
AllowNullValues: AllowNullValues | None
|
|
85
|
+
AuthType: AuthType | None
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
class InvokeOutput(TypedDict):
|
|
@@ -131,14 +131,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
131
131
|
def __init__(self):
|
|
132
132
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
133
133
|
|
|
134
|
-
def _get_supported_parameters(self) ->
|
|
134
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
135
135
|
return self._SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
136
136
|
|
|
137
137
|
def _normalise_parameters(
|
|
138
138
|
self,
|
|
139
139
|
parameters: dict,
|
|
140
|
-
boto_service_name:
|
|
141
|
-
service_action_name:
|
|
140
|
+
boto_service_name: str | None = None,
|
|
141
|
+
service_action_name: str | None = None,
|
|
142
142
|
) -> None:
|
|
143
143
|
# ApiGateway does not support botocore request relay.
|
|
144
144
|
pass
|
|
@@ -146,14 +146,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
146
146
|
def _normalise_response(
|
|
147
147
|
self,
|
|
148
148
|
response: Any,
|
|
149
|
-
boto_service_name:
|
|
150
|
-
service_action_name:
|
|
149
|
+
boto_service_name: str | None = None,
|
|
150
|
+
service_action_name: str | None = None,
|
|
151
151
|
) -> None:
|
|
152
152
|
# ApiGateway does not support botocore request relay.
|
|
153
153
|
pass
|
|
154
154
|
|
|
155
155
|
@staticmethod
|
|
156
|
-
def _query_parameters_of(parameters: TaskParameters) ->
|
|
156
|
+
def _query_parameters_of(parameters: TaskParameters) -> str | None:
|
|
157
157
|
query_str = None
|
|
158
158
|
query_parameters = parameters.get("QueryParameters")
|
|
159
159
|
# TODO: add support for AllowNullValues.
|
|
@@ -167,8 +167,8 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
167
167
|
return query_str
|
|
168
168
|
|
|
169
169
|
@staticmethod
|
|
170
|
-
def _headers_of(parameters: TaskParameters) ->
|
|
171
|
-
headers = parameters.get("Headers",
|
|
170
|
+
def _headers_of(parameters: TaskParameters) -> dict | None:
|
|
171
|
+
headers = parameters.get("Headers", {})
|
|
172
172
|
if headers:
|
|
173
173
|
for key in headers.keys():
|
|
174
174
|
# TODO: the following check takes place at parse time.
|
|
@@ -239,8 +239,8 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
239
239
|
response_body = response.json()
|
|
240
240
|
except JSONDecodeError:
|
|
241
241
|
response_body = response.text
|
|
242
|
-
if response_body == json.dumps(
|
|
243
|
-
response_body =
|
|
242
|
+
if response_body == json.dumps({}):
|
|
243
|
+
response_body = {}
|
|
244
244
|
|
|
245
245
|
# since we are not using a case-insensitive dict, and we want to remove a header, for server
|
|
246
246
|
# compatibility we should consider both casing variants
|
|
@@ -132,7 +132,7 @@ class StateTaskServiceAwsSdk(StateTaskServiceCallback):
|
|
|
132
132
|
region=resource_runtime_part.region,
|
|
133
133
|
state_credentials=state_credentials,
|
|
134
134
|
)
|
|
135
|
-
response = getattr(api_client, api_action)(**normalised_parameters) or
|
|
135
|
+
response = getattr(api_client, api_action)(**normalised_parameters) or {}
|
|
136
136
|
if response:
|
|
137
137
|
response.pop("ResponseMetadata", None)
|
|
138
138
|
env.stack.append(response)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
from botocore.exceptions import ClientError
|
|
4
5
|
from moto.batch.utils import JobStatus
|
|
@@ -62,7 +63,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
62
63
|
def __init__(self):
|
|
63
64
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
64
65
|
|
|
65
|
-
def _get_supported_parameters(self) ->
|
|
66
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
66
67
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
67
68
|
|
|
68
69
|
@staticmethod
|
|
@@ -70,12 +71,12 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
70
71
|
# Attaches to the ContainerOverrides environment variables the AWS managed flags.
|
|
71
72
|
container_overrides = parameters.get("ContainerOverrides")
|
|
72
73
|
if container_overrides is None:
|
|
73
|
-
container_overrides =
|
|
74
|
+
container_overrides = {}
|
|
74
75
|
parameters["ContainerOverrides"] = container_overrides
|
|
75
76
|
|
|
76
77
|
environment = container_overrides.get("Environment")
|
|
77
78
|
if environment is None:
|
|
78
|
-
environment =
|
|
79
|
+
environment = []
|
|
79
80
|
container_overrides["Environment"] = environment
|
|
80
81
|
|
|
81
82
|
environment.append(
|
|
@@ -117,7 +118,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
117
118
|
"Proxy: null",
|
|
118
119
|
]
|
|
119
120
|
)
|
|
120
|
-
cause = f"
|
|
121
|
+
cause = f"{error_message} ({response_details})"
|
|
121
122
|
return FailureEvent(
|
|
122
123
|
env=env,
|
|
123
124
|
error_name=CustomErrorName(error_name),
|
|
@@ -139,7 +140,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
139
140
|
resource_runtime_part: ResourceRuntimePart,
|
|
140
141
|
normalised_parameters: dict,
|
|
141
142
|
state_credentials: StateCredentials,
|
|
142
|
-
) -> Callable[[],
|
|
143
|
+
) -> Callable[[], Any | None]:
|
|
143
144
|
batch_client = boto_client_for(
|
|
144
145
|
service="batch",
|
|
145
146
|
region=resource_runtime_part.region,
|
|
@@ -148,7 +149,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
148
149
|
submission_output: dict = env.stack.pop()
|
|
149
150
|
job_id = submission_output["JobId"]
|
|
150
151
|
|
|
151
|
-
def _sync_resolver() ->
|
|
152
|
+
def _sync_resolver() -> dict | None:
|
|
152
153
|
describe_jobs_response = batch_client.describe_jobs(jobs=[job_id])
|
|
153
154
|
describe_jobs = describe_jobs_response["jobs"]
|
|
154
155
|
if describe_jobs:
|