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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Any
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from antlr4 import ParserRuleContext
|
|
6
6
|
from antlr4.tree.Tree import ParseTree, TerminalNodeImpl
|
|
@@ -318,7 +318,7 @@ LOG = logging.getLogger(__name__)
|
|
|
318
318
|
|
|
319
319
|
|
|
320
320
|
class Preprocessor(ASLParserVisitor):
|
|
321
|
-
_query_language_per_scope: list[QueryLanguage] =
|
|
321
|
+
_query_language_per_scope: list[QueryLanguage] = []
|
|
322
322
|
|
|
323
323
|
def _get_current_query_language(self) -> QueryLanguage:
|
|
324
324
|
return self._query_language_per_scope[-1]
|
|
@@ -376,7 +376,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
376
376
|
)
|
|
377
377
|
|
|
378
378
|
@staticmethod
|
|
379
|
-
def _inner_string_of(parser_rule_context: ParserRuleContext) ->
|
|
379
|
+
def _inner_string_of(parser_rule_context: ParserRuleContext) -> str | None:
|
|
380
380
|
if is_terminal(parser_rule_context, ASLLexer.NULL):
|
|
381
381
|
return None
|
|
382
382
|
inner_str = parser_rule_context.getText()
|
|
@@ -408,7 +408,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
408
408
|
def visitStates_decl(self, ctx: ASLParser.States_declContext) -> States:
|
|
409
409
|
states = States()
|
|
410
410
|
for child in ctx.children:
|
|
411
|
-
cmp:
|
|
411
|
+
cmp: Component | None = self.visit(child)
|
|
412
412
|
if isinstance(cmp, CommonStateField):
|
|
413
413
|
# TODO move check to setter or checker layer?
|
|
414
414
|
if cmp.name in states.states:
|
|
@@ -429,7 +429,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
429
429
|
|
|
430
430
|
def visitEnd_decl(self, ctx: ASLParser.End_declContext) -> End:
|
|
431
431
|
bool_child: ParseTree = ctx.children[-1]
|
|
432
|
-
bool_term:
|
|
432
|
+
bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
|
|
433
433
|
if bool_term is None:
|
|
434
434
|
raise ValueError(f"Could not derive End from declaration context '{ctx.getText()}'")
|
|
435
435
|
bool_term_rule: int = bool_term.getSymbol().type
|
|
@@ -448,7 +448,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
448
448
|
return ResultPath(result_path_src=inner_str)
|
|
449
449
|
|
|
450
450
|
def visitInput_path_decl(self, ctx: ASLParser.Input_path_declContext) -> InputPath:
|
|
451
|
-
string_sampler:
|
|
451
|
+
string_sampler: StringSampler | None = None
|
|
452
452
|
if not is_terminal(pt=ctx.children[-1], token_type=ASLLexer.NULL):
|
|
453
453
|
string_sampler: StringSampler = self.visitString_sampler(ctx.string_sampler())
|
|
454
454
|
return InputPath(string_sampler=string_sampler)
|
|
@@ -457,7 +457,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
457
457
|
self._raise_if_query_language_is_not(
|
|
458
458
|
query_language_mode=QueryLanguageMode.JSONPath, ctx=ctx
|
|
459
459
|
)
|
|
460
|
-
string_sampler:
|
|
460
|
+
string_sampler: StringSampler | None = None
|
|
461
461
|
if is_production(ctx.children[-1], ASLParser.RULE_string_sampler):
|
|
462
462
|
string_sampler: StringSampler = self.visitString_sampler(ctx.children[-1])
|
|
463
463
|
return OutputPath(string_sampler=string_sampler)
|
|
@@ -527,7 +527,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
527
527
|
def visitBranches_decl(self, ctx: ASLParser.Branches_declContext) -> BranchesDecl:
|
|
528
528
|
programs: list[Program] = []
|
|
529
529
|
for child in ctx.children:
|
|
530
|
-
cmp:
|
|
530
|
+
cmp: Component | None = self.visit(child)
|
|
531
531
|
if isinstance(cmp, Program):
|
|
532
532
|
programs.append(cmp)
|
|
533
533
|
return BranchesDecl(programs=programs)
|
|
@@ -536,7 +536,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
536
536
|
self._open_query_language_scope(ctx)
|
|
537
537
|
state_props = StateProps()
|
|
538
538
|
for child in ctx.children:
|
|
539
|
-
cmp:
|
|
539
|
+
cmp: Component | None = self.visit(child)
|
|
540
540
|
state_props.add(cmp)
|
|
541
541
|
if state_props.get(QueryLanguage) is None:
|
|
542
542
|
state_props.add(self._get_current_query_language())
|
|
@@ -583,7 +583,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
583
583
|
def visitCondition_lit(self, ctx: ASLParser.Condition_litContext) -> ConditionJSONataLit:
|
|
584
584
|
self._raise_if_query_language_is_not(query_language_mode=QueryLanguageMode.JSONata, ctx=ctx)
|
|
585
585
|
bool_child: ParseTree = ctx.children[-1]
|
|
586
|
-
bool_term:
|
|
586
|
+
bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
|
|
587
587
|
if bool_term is None:
|
|
588
588
|
raise ValueError(
|
|
589
589
|
f"Could not derive boolean literal from declaration context '{ctx.getText()}'."
|
|
@@ -651,7 +651,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
651
651
|
self._raise_if_query_language_is_not(
|
|
652
652
|
query_language_mode=QueryLanguageMode.JSONPath, ctx=ctx
|
|
653
653
|
)
|
|
654
|
-
pt:
|
|
654
|
+
pt: TerminalNodeImpl | None = is_terminal(ctx.children[0])
|
|
655
655
|
if not pt:
|
|
656
656
|
raise ValueError(f"Could not derive ChoiceOperator in block '{ctx.getText()}'.")
|
|
657
657
|
return ComparisonComposite.ChoiceOp(pt.symbol.type)
|
|
@@ -660,9 +660,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
660
660
|
self, ctx: ASLParser.Comparison_compositeContext
|
|
661
661
|
) -> ComparisonComposite:
|
|
662
662
|
choice_op: ComparisonComposite.ChoiceOp = self.visit(ctx.choice_operator())
|
|
663
|
-
rules: list[ChoiceRule] =
|
|
663
|
+
rules: list[ChoiceRule] = []
|
|
664
664
|
for child in ctx.children[1:]:
|
|
665
|
-
cmp:
|
|
665
|
+
cmp: Component | None = self.visit(child)
|
|
666
666
|
if not cmp:
|
|
667
667
|
continue
|
|
668
668
|
elif isinstance(cmp, ChoiceRule):
|
|
@@ -685,7 +685,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
685
685
|
) -> ChoiceRule:
|
|
686
686
|
composite_stmts = ComparisonCompositeProps()
|
|
687
687
|
for child in ctx.children:
|
|
688
|
-
cmp:
|
|
688
|
+
cmp: Component | None = self.visit(child)
|
|
689
689
|
composite_stmts.add(cmp)
|
|
690
690
|
return ChoiceRule(
|
|
691
691
|
comparison=composite_stmts.get(
|
|
@@ -705,7 +705,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
705
705
|
) -> ChoiceRule:
|
|
706
706
|
comparison_stmts = StateProps()
|
|
707
707
|
for child in ctx.children:
|
|
708
|
-
cmp:
|
|
708
|
+
cmp: Component | None = self.visit(child)
|
|
709
709
|
comparison_stmts.add(cmp)
|
|
710
710
|
if self._is_query_language(query_language_mode=QueryLanguageMode.JSONPath):
|
|
711
711
|
variable: Variable = comparison_stmts.get(
|
|
@@ -746,9 +746,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
746
746
|
)
|
|
747
747
|
|
|
748
748
|
def visitChoices_decl(self, ctx: ASLParser.Choices_declContext) -> ChoicesDecl:
|
|
749
|
-
rules: list[ChoiceRule] =
|
|
749
|
+
rules: list[ChoiceRule] = []
|
|
750
750
|
for child in ctx.children:
|
|
751
|
-
cmp:
|
|
751
|
+
cmp: Component | None = self.visit(child)
|
|
752
752
|
if not cmp:
|
|
753
753
|
continue
|
|
754
754
|
elif isinstance(cmp, ChoiceRule):
|
|
@@ -966,7 +966,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
966
966
|
return CSVHeaderLocation(csv_header_location_value=value)
|
|
967
967
|
|
|
968
968
|
def visitCsv_headers_decl(self, ctx: ASLParser.Csv_headers_declContext) -> CSVHeaders:
|
|
969
|
-
csv_headers: list[str] =
|
|
969
|
+
csv_headers: list[str] = []
|
|
970
970
|
for child in ctx.children[3:-1]:
|
|
971
971
|
maybe_str = is_production(pt=child, rule_index=ASLParser.RULE_string_literal)
|
|
972
972
|
if maybe_str is not None:
|
|
@@ -1074,9 +1074,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1074
1074
|
return ResultWriter(resource=resource, parargs=parargs)
|
|
1075
1075
|
|
|
1076
1076
|
def visitRetry_decl(self, ctx: ASLParser.Retry_declContext) -> RetryDecl:
|
|
1077
|
-
retriers: list[RetrierDecl] =
|
|
1077
|
+
retriers: list[RetrierDecl] = []
|
|
1078
1078
|
for child in ctx.children:
|
|
1079
|
-
cmp:
|
|
1079
|
+
cmp: Component | None = self.visit(child)
|
|
1080
1080
|
if isinstance(cmp, RetrierDecl):
|
|
1081
1081
|
retriers.append(cmp)
|
|
1082
1082
|
return RetryDecl(retriers=retriers)
|
|
@@ -1084,7 +1084,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1084
1084
|
def visitRetrier_decl(self, ctx: ASLParser.Retrier_declContext) -> RetrierDecl:
|
|
1085
1085
|
props = RetrierProps()
|
|
1086
1086
|
for child in ctx.children:
|
|
1087
|
-
cmp:
|
|
1087
|
+
cmp: Component | None = self.visit(child)
|
|
1088
1088
|
props.add(cmp)
|
|
1089
1089
|
return RetrierDecl.from_retrier_props(props=props)
|
|
1090
1090
|
|
|
@@ -1092,7 +1092,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1092
1092
|
return self.visit(ctx.children[0])
|
|
1093
1093
|
|
|
1094
1094
|
def visitError_equals_decl(self, ctx: ASLParser.Error_equals_declContext) -> ErrorEqualsDecl:
|
|
1095
|
-
error_names: list[ErrorName] =
|
|
1095
|
+
error_names: list[ErrorName] = []
|
|
1096
1096
|
for child in ctx.children:
|
|
1097
1097
|
cmp = self.visit(child)
|
|
1098
1098
|
if isinstance(cmp, ErrorName):
|
|
@@ -1103,7 +1103,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1103
1103
|
pt = ctx.children[0]
|
|
1104
1104
|
|
|
1105
1105
|
# Case: StatesErrorName.
|
|
1106
|
-
prc:
|
|
1106
|
+
prc: ParserRuleContext | None = is_production(
|
|
1107
1107
|
pt=pt, rule_index=ASLParser.RULE_states_error_name
|
|
1108
1108
|
)
|
|
1109
1109
|
if prc:
|
|
@@ -1114,7 +1114,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1114
1114
|
return CustomErrorName(error_name=error_name)
|
|
1115
1115
|
|
|
1116
1116
|
def visitStates_error_name(self, ctx: ASLParser.States_error_nameContext) -> StatesErrorName:
|
|
1117
|
-
pt:
|
|
1117
|
+
pt: TerminalNodeImpl | None = is_terminal(ctx.children[0])
|
|
1118
1118
|
if not pt:
|
|
1119
1119
|
raise ValueError(f"Could not derive ErrorName in block '{ctx.getText()}'.")
|
|
1120
1120
|
states_error_name_type = StatesErrorNameType(pt.symbol.type)
|
|
@@ -1140,15 +1140,15 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1140
1140
|
self, ctx: ASLParser.Jitter_strategy_declContext
|
|
1141
1141
|
) -> JitterStrategyDecl:
|
|
1142
1142
|
last_child: ParseTree = ctx.children[-1]
|
|
1143
|
-
strategy_child:
|
|
1143
|
+
strategy_child: TerminalNodeImpl | None = is_terminal(last_child)
|
|
1144
1144
|
strategy_value = strategy_child.getSymbol().type
|
|
1145
1145
|
jitter_strategy = JitterStrategy(strategy_value)
|
|
1146
1146
|
return JitterStrategyDecl(jitter_strategy=jitter_strategy)
|
|
1147
1147
|
|
|
1148
1148
|
def visitCatch_decl(self, ctx: ASLParser.Catch_declContext) -> CatchDecl:
|
|
1149
|
-
catchers: list[CatcherDecl] =
|
|
1149
|
+
catchers: list[CatcherDecl] = []
|
|
1150
1150
|
for child in ctx.children:
|
|
1151
|
-
cmp:
|
|
1151
|
+
cmp: Component | None = self.visit(child)
|
|
1152
1152
|
if isinstance(cmp, CatcherDecl):
|
|
1153
1153
|
catchers.append(cmp)
|
|
1154
1154
|
return CatchDecl(catchers=catchers)
|
|
@@ -1156,7 +1156,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1156
1156
|
def visitCatcher_decl(self, ctx: ASLParser.Catcher_declContext) -> CatcherDecl:
|
|
1157
1157
|
props = CatcherProps()
|
|
1158
1158
|
for child in ctx.children:
|
|
1159
|
-
cmp:
|
|
1159
|
+
cmp: Component | None = self.visit(child)
|
|
1160
1160
|
props.add(cmp)
|
|
1161
1161
|
if self._is_query_language(QueryLanguageMode.JSONPath) and not props.get(ResultPath):
|
|
1162
1162
|
props.add(CatcherDecl.DEFAULT_RESULT_PATH)
|
|
@@ -1172,7 +1172,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1172
1172
|
|
|
1173
1173
|
def visitPayload_value_bool(self, ctx: ASLParser.Payload_value_boolContext) -> PayloadValueBool:
|
|
1174
1174
|
bool_child: ParseTree = ctx.children[0]
|
|
1175
|
-
bool_term:
|
|
1175
|
+
bool_term: TerminalNodeImpl | None = is_terminal(bool_child)
|
|
1176
1176
|
if bool_term is None:
|
|
1177
1177
|
raise ValueError(
|
|
1178
1178
|
f"Could not derive PayloadValueBool from declaration context '{ctx.getText()}'."
|
|
@@ -1208,17 +1208,17 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1208
1208
|
return PayloadBindingValue(field=string_literal.literal_value, payload_value=payload_value)
|
|
1209
1209
|
|
|
1210
1210
|
def visitPayload_arr_decl(self, ctx: ASLParser.Payload_arr_declContext) -> PayloadArr:
|
|
1211
|
-
payload_values: list[PayloadValue] =
|
|
1211
|
+
payload_values: list[PayloadValue] = []
|
|
1212
1212
|
for child in ctx.children:
|
|
1213
|
-
cmp:
|
|
1213
|
+
cmp: Component | None = self.visit(child)
|
|
1214
1214
|
if isinstance(cmp, PayloadValue):
|
|
1215
1215
|
payload_values.append(cmp)
|
|
1216
1216
|
return PayloadArr(payload_values=payload_values)
|
|
1217
1217
|
|
|
1218
1218
|
def visitPayload_tmpl_decl(self, ctx: ASLParser.Payload_tmpl_declContext) -> PayloadTmpl:
|
|
1219
|
-
payload_bindings: list[PayloadBinding] =
|
|
1219
|
+
payload_bindings: list[PayloadBinding] = []
|
|
1220
1220
|
for child in ctx.children:
|
|
1221
|
-
cmp:
|
|
1221
|
+
cmp: Component | None = self.visit(child)
|
|
1222
1222
|
if isinstance(cmp, PayloadBinding):
|
|
1223
1223
|
payload_bindings.append(cmp)
|
|
1224
1224
|
return PayloadTmpl(payload_bindings=payload_bindings)
|
|
@@ -1231,7 +1231,7 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1231
1231
|
self._open_query_language_scope(ctx)
|
|
1232
1232
|
props = TypedProps()
|
|
1233
1233
|
for child in ctx.children:
|
|
1234
|
-
cmp:
|
|
1234
|
+
cmp: Component | None = self.visit(child)
|
|
1235
1235
|
props.add(cmp)
|
|
1236
1236
|
if props.get(QueryLanguage) is None:
|
|
1237
1237
|
props.add(self._get_current_query_language())
|
|
@@ -1312,9 +1312,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1312
1312
|
def visitAssign_template_value_array(
|
|
1313
1313
|
self, ctx: ASLParser.Assign_template_value_arrayContext
|
|
1314
1314
|
) -> AssignTemplateValueArray:
|
|
1315
|
-
values: list[AssignTemplateValue] =
|
|
1315
|
+
values: list[AssignTemplateValue] = []
|
|
1316
1316
|
for child in ctx.children:
|
|
1317
|
-
cmp:
|
|
1317
|
+
cmp: Component | None = self.visit(child)
|
|
1318
1318
|
if isinstance(cmp, AssignTemplateValue):
|
|
1319
1319
|
values.append(cmp)
|
|
1320
1320
|
return AssignTemplateValueArray(values=values)
|
|
@@ -1322,9 +1322,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1322
1322
|
def visitAssign_template_value_object(
|
|
1323
1323
|
self, ctx: ASLParser.Assign_template_value_objectContext
|
|
1324
1324
|
) -> AssignTemplateValueObject:
|
|
1325
|
-
bindings: list[AssignTemplateBinding] =
|
|
1325
|
+
bindings: list[AssignTemplateBinding] = []
|
|
1326
1326
|
for child in ctx.children:
|
|
1327
|
-
cmp:
|
|
1327
|
+
cmp: Component | None = self.visit(child)
|
|
1328
1328
|
if isinstance(cmp, AssignTemplateBinding):
|
|
1329
1329
|
bindings.append(cmp)
|
|
1330
1330
|
return AssignTemplateValueObject(bindings=bindings)
|
|
@@ -1359,9 +1359,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1359
1359
|
def visitAssign_decl_body(
|
|
1360
1360
|
self, ctx: ASLParser.Assign_decl_bodyContext
|
|
1361
1361
|
) -> list[AssignDeclBinding]:
|
|
1362
|
-
bindings: list[AssignDeclBinding] =
|
|
1362
|
+
bindings: list[AssignDeclBinding] = []
|
|
1363
1363
|
for child in ctx.children:
|
|
1364
|
-
cmp:
|
|
1364
|
+
cmp: Component | None = self.visit(child)
|
|
1365
1365
|
if isinstance(cmp, AssignDeclBinding):
|
|
1366
1366
|
bindings.append(cmp)
|
|
1367
1367
|
return bindings
|
|
@@ -1414,9 +1414,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1414
1414
|
def visitJsonata_template_value_array(
|
|
1415
1415
|
self, ctx: ASLParser.Jsonata_template_value_arrayContext
|
|
1416
1416
|
) -> JSONataTemplateValueArray:
|
|
1417
|
-
values: list[JSONataTemplateValue] =
|
|
1417
|
+
values: list[JSONataTemplateValue] = []
|
|
1418
1418
|
for child in ctx.children:
|
|
1419
|
-
cmp:
|
|
1419
|
+
cmp: Component | None = self.visit(child)
|
|
1420
1420
|
if isinstance(cmp, JSONataTemplateValue):
|
|
1421
1421
|
values.append(cmp)
|
|
1422
1422
|
return JSONataTemplateValueArray(values=values)
|
|
@@ -1424,9 +1424,9 @@ class Preprocessor(ASLParserVisitor):
|
|
|
1424
1424
|
def visitJsonata_template_value_object(
|
|
1425
1425
|
self, ctx: ASLParser.Jsonata_template_value_objectContext
|
|
1426
1426
|
) -> JSONataTemplateValueObject:
|
|
1427
|
-
bindings: list[JSONataTemplateBinding] =
|
|
1427
|
+
bindings: list[JSONataTemplateBinding] = []
|
|
1428
1428
|
for child in ctx.children:
|
|
1429
|
-
cmp:
|
|
1429
|
+
cmp: Component | None = self.visit(child)
|
|
1430
1430
|
if isinstance(cmp, JSONataTemplateBinding):
|
|
1431
1431
|
bindings.append(cmp)
|
|
1432
1432
|
return JSONataTemplateValueObject(bindings=bindings)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from collections import OrderedDict
|
|
2
|
-
from typing import Any
|
|
2
|
+
from typing import Any
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class TypedProps:
|
|
@@ -18,7 +18,7 @@ class TypedProps:
|
|
|
18
18
|
)
|
|
19
19
|
self._instance_by_type[typ] = instance
|
|
20
20
|
|
|
21
|
-
def get(self, typ: type, raise_on_missing:
|
|
21
|
+
def get(self, typ: type, raise_on_missing: Exception | None = None) -> Any | None:
|
|
22
22
|
if raise_on_missing and typ not in self._instance_by_type:
|
|
23
23
|
raise raise_on_missing
|
|
24
24
|
return self._instance_by_type.get(typ)
|
localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py
CHANGED
|
@@ -30,7 +30,7 @@ class VariableReferencesStaticAnalyser(StaticAnalyser):
|
|
|
30
30
|
|
|
31
31
|
def __init__(self):
|
|
32
32
|
super().__init__()
|
|
33
|
-
self._fringe_state_names =
|
|
33
|
+
self._fringe_state_names = []
|
|
34
34
|
self._variable_references = OrderedDict()
|
|
35
35
|
|
|
36
36
|
def get_variable_references(self) -> VariableReferences:
|
|
@@ -54,7 +54,7 @@ class VariableReferencesStaticAnalyser(StaticAnalyser):
|
|
|
54
54
|
|
|
55
55
|
def _put_variable_name(self, variable_name: VariableName) -> None:
|
|
56
56
|
state_name = self._fringe_state_names[-1]
|
|
57
|
-
variable_name_list: VariableNameList = self._variable_references.get(state_name,
|
|
57
|
+
variable_name_list: VariableNameList = self._variable_references.get(state_name, [])
|
|
58
58
|
if variable_name in variable_name_list:
|
|
59
59
|
return
|
|
60
60
|
variable_name_list.append(variable_name)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import json
|
|
3
3
|
from json import JSONEncoder
|
|
4
|
-
from typing import Any
|
|
4
|
+
from typing import Any
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class _DateTimeEncoder(JSONEncoder):
|
|
@@ -12,5 +12,5 @@ class _DateTimeEncoder(JSONEncoder):
|
|
|
12
12
|
return str(obj)
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
def to_json_str(obj: Any, separators:
|
|
15
|
+
def to_json_str(obj: Any, separators: tuple[str, str] | None = None) -> str:
|
|
16
16
|
return json.dumps(obj, cls=_DateTimeEncoder, separators=separators)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import re
|
|
2
|
-
from typing import Any, Final
|
|
2
|
+
from typing import Any, Final
|
|
3
3
|
|
|
4
4
|
from jsonpath_ng.ext import parse
|
|
5
5
|
from jsonpath_ng.jsonpath import Index
|
|
@@ -24,7 +24,7 @@ def _contains_slice_or_wildcard_array(path: str) -> bool:
|
|
|
24
24
|
class NoSuchJsonPathError(Exception):
|
|
25
25
|
json_path: Final[str]
|
|
26
26
|
data: Final[Any]
|
|
27
|
-
_message:
|
|
27
|
+
_message: str | None
|
|
28
28
|
|
|
29
29
|
def __init__(self, json_path: str, data: Any):
|
|
30
30
|
self.json_path = json_path
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
from collections import deque
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import (
|
|
6
6
|
ActivityListItem,
|
|
@@ -26,16 +26,16 @@ class Activity:
|
|
|
26
26
|
creation_date: Final[Timestamp]
|
|
27
27
|
_tasks: Final[deque[ActivityTask]]
|
|
28
28
|
|
|
29
|
-
def __init__(self, arn: Arn, name: Name, creation_date:
|
|
29
|
+
def __init__(self, arn: Arn, name: Name, creation_date: Timestamp | None = None):
|
|
30
30
|
self.arn = arn
|
|
31
31
|
self.name = name
|
|
32
|
-
self.creation_date = creation_date or datetime.datetime.now(tz=datetime.
|
|
32
|
+
self.creation_date = creation_date or datetime.datetime.now(tz=datetime.UTC)
|
|
33
33
|
self._tasks = deque()
|
|
34
34
|
|
|
35
35
|
def add_task(self, task: ActivityTask):
|
|
36
36
|
self._tasks.append(task)
|
|
37
37
|
|
|
38
|
-
def get_task(self) ->
|
|
38
|
+
def get_task(self) -> ActivityTask | None:
|
|
39
39
|
return self._tasks.popleft()
|
|
40
40
|
|
|
41
41
|
def to_describe_activity_output(self) -> DescribeActivityOutput:
|
|
@@ -4,7 +4,7 @@ import copy
|
|
|
4
4
|
import datetime
|
|
5
5
|
import random
|
|
6
6
|
import threading
|
|
7
|
-
from typing import Final
|
|
7
|
+
from typing import Final
|
|
8
8
|
|
|
9
9
|
from localstack.aws.api.stepfunctions import (
|
|
10
10
|
AliasDescription,
|
|
@@ -20,9 +20,9 @@ from localstack.utils.strings import token_generator
|
|
|
20
20
|
|
|
21
21
|
class Alias:
|
|
22
22
|
_mutex: Final[threading.Lock]
|
|
23
|
-
update_date:
|
|
23
|
+
update_date: datetime.datetime | None
|
|
24
24
|
name: Final[CharacterRestrictedName]
|
|
25
|
-
_description:
|
|
25
|
+
_description: AliasDescription | None
|
|
26
26
|
_routing_configuration_list: RoutingConfigurationList
|
|
27
27
|
_state_machine_version_arns: list[Arn]
|
|
28
28
|
_execution_probability_distribution: list[int]
|
|
@@ -34,7 +34,7 @@ class Alias:
|
|
|
34
34
|
self,
|
|
35
35
|
state_machine_arn: Arn,
|
|
36
36
|
name: CharacterRestrictedName,
|
|
37
|
-
description:
|
|
37
|
+
description: AliasDescription | None,
|
|
38
38
|
routing_configuration_list: RoutingConfigurationList,
|
|
39
39
|
):
|
|
40
40
|
self._mutex = threading.Lock()
|
|
@@ -66,7 +66,7 @@ class Alias:
|
|
|
66
66
|
|
|
67
67
|
@staticmethod
|
|
68
68
|
def _get_mutex_date() -> datetime.datetime:
|
|
69
|
-
return datetime.datetime.now(tz=datetime.
|
|
69
|
+
return datetime.datetime.now(tz=datetime.UTC)
|
|
70
70
|
|
|
71
71
|
def get_routing_configuration_list(self) -> RoutingConfigurationList:
|
|
72
72
|
return copy.deepcopy(self._routing_configuration_list)
|
|
@@ -77,7 +77,7 @@ class Alias:
|
|
|
77
77
|
|
|
78
78
|
def update(
|
|
79
79
|
self,
|
|
80
|
-
description:
|
|
80
|
+
description: AliasDescription | None,
|
|
81
81
|
routing_configuration_list: RoutingConfigurationList,
|
|
82
82
|
) -> None:
|
|
83
83
|
with self._mutex:
|
|
@@ -88,8 +88,8 @@ class Alias:
|
|
|
88
88
|
|
|
89
89
|
if routing_configuration_list:
|
|
90
90
|
self._routing_configuration_list = routing_configuration_list
|
|
91
|
-
self._state_machine_version_arns =
|
|
92
|
-
self._execution_probability_distribution =
|
|
91
|
+
self._state_machine_version_arns = []
|
|
92
|
+
self._execution_probability_distribution = []
|
|
93
93
|
for routing_configuration in routing_configuration_list:
|
|
94
94
|
self._state_machine_version_arns.append(
|
|
95
95
|
routing_configuration["stateMachineVersionArn"]
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import datetime
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
|
-
from typing import Final
|
|
6
|
+
from typing import Final
|
|
7
7
|
|
|
8
8
|
from localstack.aws.api.events import PutEventsRequestEntry
|
|
9
9
|
from localstack.aws.api.stepfunctions import (
|
|
@@ -72,7 +72,7 @@ class BaseExecutionWorkerCommunication(ExecutionWorkerCommunication):
|
|
|
72
72
|
|
|
73
73
|
def _reflect_execution_status(self):
|
|
74
74
|
exit_program_state: ProgramState = self.execution.exec_worker.env.program_state()
|
|
75
|
-
self.execution.stop_date = datetime.datetime.now(tz=datetime.
|
|
75
|
+
self.execution.stop_date = datetime.datetime.now(tz=datetime.UTC)
|
|
76
76
|
if isinstance(exit_program_state, ProgramEnded):
|
|
77
77
|
self.execution.exec_status = ExecutionStatus.SUCCEEDED
|
|
78
78
|
self.execution.output = self.execution.exec_worker.env.states.get_input()
|
|
@@ -105,27 +105,27 @@ class Execution:
|
|
|
105
105
|
|
|
106
106
|
state_machine: Final[StateMachineInstance]
|
|
107
107
|
state_machine_arn: Final[Arn]
|
|
108
|
-
state_machine_version_arn: Final[
|
|
109
|
-
state_machine_alias_arn: Final[
|
|
108
|
+
state_machine_version_arn: Final[Arn | None]
|
|
109
|
+
state_machine_alias_arn: Final[Arn | None]
|
|
110
110
|
|
|
111
|
-
mock_test_case: Final[
|
|
111
|
+
mock_test_case: Final[MockTestCase | None]
|
|
112
112
|
|
|
113
113
|
start_date: Final[Timestamp]
|
|
114
|
-
input_data: Final[
|
|
115
|
-
input_details: Final[
|
|
116
|
-
trace_header: Final[
|
|
117
|
-
_cloud_watch_logging_session: Final[
|
|
114
|
+
input_data: Final[json | None]
|
|
115
|
+
input_details: Final[CloudWatchEventsExecutionDataDetails | None]
|
|
116
|
+
trace_header: Final[TraceHeader | None]
|
|
117
|
+
_cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
|
|
118
118
|
|
|
119
|
-
exec_status:
|
|
120
|
-
stop_date:
|
|
119
|
+
exec_status: ExecutionStatus | None
|
|
120
|
+
stop_date: Timestamp | None
|
|
121
121
|
|
|
122
|
-
output:
|
|
123
|
-
output_details:
|
|
122
|
+
output: json | None
|
|
123
|
+
output_details: CloudWatchEventsExecutionDataDetails | None
|
|
124
124
|
|
|
125
|
-
error:
|
|
126
|
-
cause:
|
|
125
|
+
error: SensitiveError | None
|
|
126
|
+
cause: SensitiveCause | None
|
|
127
127
|
|
|
128
|
-
exec_worker:
|
|
128
|
+
exec_worker: ExecutionWorker | None
|
|
129
129
|
|
|
130
130
|
_activity_store: dict[Arn, Activity]
|
|
131
131
|
|
|
@@ -139,12 +139,12 @@ class Execution:
|
|
|
139
139
|
region_name: str,
|
|
140
140
|
state_machine: StateMachineInstance,
|
|
141
141
|
start_date: Timestamp,
|
|
142
|
-
cloud_watch_logging_session:
|
|
142
|
+
cloud_watch_logging_session: CloudWatchLoggingSession | None,
|
|
143
143
|
activity_store: dict[Arn, Activity],
|
|
144
|
-
input_data:
|
|
145
|
-
trace_header:
|
|
146
|
-
state_machine_alias_arn:
|
|
147
|
-
mock_test_case:
|
|
144
|
+
input_data: json | None = None,
|
|
145
|
+
trace_header: TraceHeader | None = None,
|
|
146
|
+
state_machine_alias_arn: Arn | None = None,
|
|
147
|
+
mock_test_case: MockTestCase | None = None,
|
|
148
148
|
):
|
|
149
149
|
self.name = name
|
|
150
150
|
self.sm_type = sm_type
|
|
@@ -258,7 +258,7 @@ class Execution:
|
|
|
258
258
|
|
|
259
259
|
def to_history_output(self) -> GetExecutionHistoryOutput:
|
|
260
260
|
env = self.exec_worker.env
|
|
261
|
-
event_history: HistoryEventList =
|
|
261
|
+
event_history: HistoryEventList = []
|
|
262
262
|
if env is not None:
|
|
263
263
|
# The execution has not started yet.
|
|
264
264
|
event_history: HistoryEventList = env.event_manager.get_event_history()
|
|
@@ -267,9 +267,7 @@ class Execution:
|
|
|
267
267
|
@staticmethod
|
|
268
268
|
def _to_serialized_date(timestamp: datetime.datetime) -> str:
|
|
269
269
|
"""See test in tests.aws.services.stepfunctions.v2.base.test_base.TestSnfBase.test_execution_dateformat"""
|
|
270
|
-
return (
|
|
271
|
-
f"{timestamp.astimezone(datetime.timezone.utc).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3]}Z"
|
|
272
|
-
)
|
|
270
|
+
return f"{timestamp.astimezone(datetime.UTC).strftime('%Y-%m-%dT%H:%M:%S.%f')[:-3]}Z"
|
|
273
271
|
|
|
274
272
|
def _get_start_execution_worker_comm(self) -> BaseExecutionWorkerCommunication:
|
|
275
273
|
return BaseExecutionWorkerCommunication(self)
|
|
@@ -318,14 +316,14 @@ class Execution:
|
|
|
318
316
|
self.publish_execution_status_change_event()
|
|
319
317
|
self.exec_worker.start()
|
|
320
318
|
|
|
321
|
-
def stop(self, stop_date: datetime.datetime, error:
|
|
322
|
-
exec_worker:
|
|
319
|
+
def stop(self, stop_date: datetime.datetime, error: str | None, cause: str | None):
|
|
320
|
+
exec_worker: ExecutionWorker | None = self.exec_worker
|
|
323
321
|
if exec_worker:
|
|
324
322
|
exec_worker.stop(stop_date=stop_date, cause=cause, error=error)
|
|
325
323
|
|
|
326
324
|
def publish_execution_status_change_event(self):
|
|
327
325
|
input_value = (
|
|
328
|
-
|
|
326
|
+
{} if not self.input_data else to_json_str(self.input_data, separators=(",", ":"))
|
|
329
327
|
)
|
|
330
328
|
output_value = (
|
|
331
329
|
None if self.output is None else to_json_str(self.output, separators=(",", ":"))
|
|
@@ -358,10 +356,11 @@ class Execution:
|
|
|
358
356
|
try:
|
|
359
357
|
self._get_events_client().put_events(Entries=[entry])
|
|
360
358
|
except Exception:
|
|
361
|
-
LOG.
|
|
359
|
+
LOG.error(
|
|
362
360
|
"Unable to send notification of Entry='%s' for Step Function execution with Arn='%s' to EventBridge.",
|
|
363
361
|
entry,
|
|
364
362
|
self.exec_arn,
|
|
363
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
365
364
|
)
|
|
366
365
|
|
|
367
366
|
|
|
@@ -380,7 +379,7 @@ class SyncExecutionWorkerCommunication(BaseExecutionWorkerCommunication):
|
|
|
380
379
|
|
|
381
380
|
|
|
382
381
|
class SyncExecution(Execution):
|
|
383
|
-
sync_execution_status:
|
|
382
|
+
sync_execution_status: SyncExecutionStatus | None = None
|
|
384
383
|
|
|
385
384
|
def _get_start_execution_worker(self) -> SyncExecutionWorker:
|
|
386
385
|
return SyncExecutionWorker(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
from threading import Thread
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import (
|
|
6
6
|
Arn,
|
|
@@ -36,19 +36,19 @@ from localstack.utils.common import TMP_THREADS
|
|
|
36
36
|
class ExecutionWorker:
|
|
37
37
|
_evaluation_details: Final[EvaluationDetails]
|
|
38
38
|
_execution_communication: Final[ExecutionWorkerCommunication]
|
|
39
|
-
_cloud_watch_logging_session: Final[
|
|
40
|
-
_mock_test_case: Final[
|
|
39
|
+
_cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
|
|
40
|
+
_mock_test_case: Final[MockTestCase | None]
|
|
41
41
|
_activity_store: dict[Arn, Activity]
|
|
42
42
|
|
|
43
|
-
env:
|
|
43
|
+
env: Environment | None
|
|
44
44
|
|
|
45
45
|
def __init__(
|
|
46
46
|
self,
|
|
47
47
|
evaluation_details: EvaluationDetails,
|
|
48
48
|
exec_comm: ExecutionWorkerCommunication,
|
|
49
|
-
cloud_watch_logging_session:
|
|
49
|
+
cloud_watch_logging_session: CloudWatchLoggingSession | None,
|
|
50
50
|
activity_store: dict[Arn, Activity],
|
|
51
|
-
mock_test_case:
|
|
51
|
+
mock_test_case: MockTestCase | None = None,
|
|
52
52
|
):
|
|
53
53
|
self._evaluation_details = evaluation_details
|
|
54
54
|
self._execution_communication = exec_comm
|
|
@@ -113,7 +113,7 @@ class ExecutionWorker:
|
|
|
113
113
|
TMP_THREADS.append(execution_logic_thread)
|
|
114
114
|
execution_logic_thread.start()
|
|
115
115
|
|
|
116
|
-
def stop(self, stop_date: datetime.datetime, error:
|
|
116
|
+
def stop(self, stop_date: datetime.datetime, error: str | None, cause: str | None):
|
|
117
117
|
self.env.set_stop(stop_date=stop_date, cause=cause, error=error)
|
|
118
118
|
|
|
119
119
|
|