localstack-core 4.6.1.dev60__py3-none-any.whl → 4.10.1.dev12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/aws/api/apigateway/__init__.py +87 -110
- localstack/aws/api/cloudformation/__init__.py +18 -4
- localstack/aws/api/cloudwatch/__init__.py +41 -1
- localstack/aws/api/config/__init__.py +4 -0
- localstack/aws/api/core.py +8 -5
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1545 -66
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/iam/__init__.py +7 -0
- localstack/aws/api/kinesis/__init__.py +19 -0
- localstack/aws/api/kms/__init__.py +6 -0
- localstack/aws/api/lambda_/__init__.py +36 -23
- localstack/aws/api/logs/__init__.py +20 -8
- localstack/aws/api/opensearch/__init__.py +16 -0
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/redshift/__init__.py +9 -3
- localstack/aws/api/route53/__init__.py +5 -0
- localstack/aws/api/s3/__init__.py +12 -0
- localstack/aws/api/s3control/__init__.py +56 -0
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +14 -11
- localstack/aws/connect.py +42 -41
- localstack/aws/forwarder.py +57 -9
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +2 -3
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +13 -4
- localstack/aws/handlers/metric_handler.py +44 -5
- localstack/aws/handlers/service.py +48 -28
- localstack/aws/mocking.py +18 -27
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +475 -49
- localstack/aws/protocol/serializer.py +723 -106
- localstack/aws/protocol/service_router.py +133 -33
- localstack/aws/protocol/validate.py +6 -6
- localstack/aws/scaffold.py +9 -10
- localstack/aws/serving/edge.py +5 -6
- localstack/aws/serving/hypercorn.py +2 -2
- localstack/aws/serving/twisted.py +1 -2
- localstack/aws/serving/werkzeug.py +2 -2
- localstack/aws/skeleton.py +12 -11
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +66 -46
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +11 -11
- localstack/cli/lpm.py +4 -5
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +44 -30
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/__main__.py +5 -5
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +6 -6
- localstack/dns/models.py +2 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +16 -6
- localstack/http/dispatcher.py +1 -2
- localstack/http/response.py +2 -2
- localstack/http/router.py +1 -1
- localstack/http/trace.py +2 -1
- localstack/logging/format.py +6 -6
- localstack/packages/api.py +13 -12
- localstack/packages/core.py +4 -4
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +38 -12
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +8 -9
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +7 -10
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +27 -28
- localstack/services/apigateway/legacy/integration.py +11 -10
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +6 -6
- localstack/services/apigateway/models.py +16 -16
- localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
- localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
- localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
- localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +9 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
- localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- localstack/services/apigateway/next_gen/provider.py +5 -0
- localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
- localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
- localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
- localstack/services/cdk/resource_providers/cdk_metadata.py +4 -3
- localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
- localstack/services/cloudformation/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +2 -2
- localstack/services/cloudformation/deployment_utils.py +14 -12
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +27 -17
- localstack/services/cloudformation/engine/parameters.py +4 -4
- localstack/services/cloudformation/engine/template_deployer.py +15 -14
- localstack/services/cloudformation/engine/template_utils.py +34 -12
- localstack/services/cloudformation/engine/transformers.py +11 -8
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
- localstack/services/cloudformation/engine/v2/resolving.py +102 -0
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +11 -6
- localstack/services/cloudformation/provider_utils.py +34 -4
- localstack/services/cloudformation/resource_provider.py +31 -21
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
- localstack/services/cloudformation/resources.py +24149 -0
- localstack/services/cloudformation/scaffolding/__main__.py +13 -12
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/stores.py +33 -22
- localstack/services/cloudformation/v2/entities.py +103 -88
- localstack/services/cloudformation/v2/provider.py +872 -131
- localstack/services/cloudformation/v2/types.py +38 -0
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +11 -8
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +30 -25
- localstack/services/cloudwatch/provider_v2.py +27 -32
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
- localstack/services/dynamodb/packages.py +3 -3
- localstack/services/dynamodb/provider.py +159 -18
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/server.py +2 -2
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +157 -18
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +26 -5
- localstack/services/ec2/provider.py +3 -3
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
- localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
- localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +29 -22
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +22 -19
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +6 -6
- localstack/services/es/provider.py +21 -21
- localstack/services/events/archive.py +2 -2
- localstack/services/events/connection.py +5 -5
- localstack/services/events/event_bus.py +9 -9
- localstack/services/events/event_rule_engine.py +31 -13
- localstack/services/events/models.py +29 -30
- localstack/services/events/provider.py +29 -26
- localstack/services/events/replay.py +3 -3
- localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
- localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_connection.py +27 -27
- localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
- localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
- localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_rule.py +82 -82
- localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
- localstack/services/events/rule.py +15 -15
- localstack/services/events/target.py +21 -13
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +15 -15
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +25 -16
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +14 -119
- localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
- localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
- localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
- localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
- localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
- localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
- localstack/services/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +17 -5
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/provider.py +86 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
- localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
- localstack/services/kms/models.py +21 -18
- localstack/services/kms/provider.py +62 -26
- localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
- localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
- localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
- localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
- localstack/services/kms/utils.py +4 -3
- localstack/services/lambda_/api_utils.py +19 -16
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
- localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
- localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
- localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
- localstack/services/lambda_/hooks.py +6 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
- localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
- localstack/services/lambda_/invocation/lambda_models.py +33 -30
- localstack/services/lambda_/invocation/lambda_service.py +12 -5
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/invocation/version_manager.py +31 -8
- localstack/services/lambda_/ldm.py +14 -0
- localstack/services/lambda_/packages.py +3 -4
- localstack/services/lambda_/provider.py +9 -26
- localstack/services/lambda_/provider_utils.py +1 -1
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
- localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
- localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_url.py +15 -15
- localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
- localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
- localstack/services/lambda_/runtimes.py +1 -3
- localstack/services/lambda_/urlrouter.py +14 -1
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +39 -22
- localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
- localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
- localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
- localstack/services/moto.py +5 -4
- localstack/services/opensearch/cluster.py +28 -20
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +27 -9
- localstack/services/opensearch/provider.py +15 -10
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
- localstack/services/opensearch/versions.py +57 -10
- localstack/services/plugins.py +37 -32
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
- localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
- localstack/services/route53/models.py +1 -3
- localstack/services/route53/provider.py +1 -2
- localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
- localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
- localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
- localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
- localstack/services/route53resolver/models.py +8 -10
- localstack/services/route53resolver/provider.py +12 -12
- localstack/services/s3/codec.py +2 -2
- localstack/services/s3/constants.py +5 -2
- localstack/services/s3/cors.py +8 -8
- localstack/services/s3/models.py +73 -73
- localstack/services/s3/notifications.py +74 -58
- localstack/services/s3/presigned_url.py +41 -59
- localstack/services/s3/provider.py +86 -29
- localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
- localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
- localstack/services/s3/storage/core.py +4 -3
- localstack/services/s3/storage/ephemeral.py +7 -6
- localstack/services/s3/utils.py +51 -31
- localstack/services/s3/validation.py +47 -33
- localstack/services/s3/website_hosting.py +9 -7
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
- localstack/services/secretsmanager/provider.py +10 -12
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
- localstack/services/ses/models.py +8 -1
- localstack/services/ses/provider.py +128 -55
- localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
- localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
- localstack/services/sns/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +9 -7
- localstack/services/sns/publisher.py +37 -23
- localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
- localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
- localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
- localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
- localstack/services/sns/v2/models.py +167 -0
- localstack/services/sns/v2/provider.py +867 -0
- localstack/services/sns/v2/utils.py +130 -0
- localstack/services/sqs/constants.py +2 -2
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +71 -36
- localstack/services/sqs/provider.py +56 -332
- localstack/services/sqs/query_api.py +8 -5
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +7 -5
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +123 -4
- localstack/services/ssm/provider.py +3 -4
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
- localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
- localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
- localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
- localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
- localstack/services/stepfunctions/asl/component/common/error_name/states_error_name_type.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
- localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
- localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
- localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +4 -4
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/program/program.py +9 -9
- localstack/services/stepfunctions/asl/component/program/states.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +12 -13
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +18 -18
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
- localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
- localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
- localstack/services/stepfunctions/asl/eval/environment.py +22 -24
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
- localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
- localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
- localstack/services/stepfunctions/asl/eval/states.py +12 -12
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
- localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
- localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
- localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py +2 -2
- localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
- localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
- localstack/services/stepfunctions/backend/activity.py +4 -4
- localstack/services/stepfunctions/backend/alias.py +8 -8
- localstack/services/stepfunctions/backend/execution.py +29 -30
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +28 -28
- localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
- localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
- localstack/services/stepfunctions/mocking/mock_config.py +9 -9
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/packages.py +14 -5
- localstack/services/stepfunctions/provider.py +34 -44
- localstack/services/stepfunctions/quotas.py +2 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
- localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
- localstack/services/stores.py +8 -8
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +8 -3
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +36 -23
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +68 -18
- localstack/testing/pytest/container.py +5 -5
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +188 -49
- localstack/testing/pytest/in_memory_localstack.py +1 -3
- localstack/testing/pytest/marking.py +42 -15
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
- localstack/testing/pytest/stepfunctions/utils.py +11 -10
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -4
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +8 -3
- localstack/testing/testselection/matching.py +2 -2
- localstack/testing/testselection/opt_out.py +1 -1
- localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
- localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
- localstack/testing/testselection/testselection.py +2 -2
- localstack/utils/analytics/cli.py +2 -3
- localstack/utils/analytics/client.py +5 -5
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +11 -18
- localstack/utils/analytics/metrics/registry.py +2 -2
- localstack/utils/analytics/publisher.py +4 -5
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +4 -4
- localstack/utils/archives.py +12 -12
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +26 -31
- localstack/utils/aws/aws_responses.py +21 -28
- localstack/utils/aws/aws_stack.py +7 -12
- localstack/utils/aws/dead_letter_queue.py +4 -9
- localstack/utils/aws/message_forwarding.py +8 -11
- localstack/utils/aws/request_context.py +5 -6
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +4 -4
- localstack/utils/batch_policy.py +4 -4
- localstack/utils/bootstrap.py +37 -30
- localstack/utils/catalog/catalog.py +139 -0
- localstack/utils/catalog/catalog_loader.py +119 -0
- localstack/utils/catalog/common.py +58 -0
- localstack/utils/catalog/plugins.py +28 -0
- localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
- localstack/utils/collections.py +33 -27
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +5 -6
- localstack/utils/container_utils/container_client.py +156 -160
- localstack/utils/container_utils/docker_cmd_client.py +97 -81
- localstack/utils/container_utils/docker_sdk_client.py +75 -72
- localstack/utils/crypto.py +12 -13
- localstack/utils/diagnose.py +11 -12
- localstack/utils/docker_utils.py +11 -7
- localstack/utils/files.py +34 -15
- localstack/utils/functions.py +5 -4
- localstack/utils/http.py +14 -14
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +21 -7
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +25 -17
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +15 -14
- localstack/utils/patch.py +14 -7
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +15 -14
- localstack/utils/scheduler.py +13 -12
- localstack/utils/server/tcp_proxy.py +2 -2
- localstack/utils/serving.py +3 -4
- localstack/utils/strings.py +15 -16
- localstack/utils/sync.py +126 -1
- localstack/utils/tagging.py +10 -8
- localstack/utils/testutil.py +17 -17
- localstack/utils/threads.py +3 -3
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xml.py +1 -1
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
- localstack/packages/terraform.py +0 -47
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
- localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
- localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
- localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
- localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
- /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
|
@@ -2,10 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import datetime
|
|
5
|
-
import json
|
|
6
5
|
import logging
|
|
7
6
|
from abc import ABC
|
|
8
|
-
from typing import
|
|
7
|
+
from typing import Any, Final
|
|
9
8
|
|
|
10
9
|
from localstack.aws.api.stepfunctions import (
|
|
11
10
|
ExecutionFailedEventDetails,
|
|
@@ -74,27 +73,27 @@ class CommonStateField(EvalComponent, ABC):
|
|
|
74
73
|
continue_with: ContinueWith
|
|
75
74
|
|
|
76
75
|
# Holds a human-readable description of the state.
|
|
77
|
-
comment:
|
|
76
|
+
comment: Comment | None
|
|
78
77
|
|
|
79
78
|
# A path that selects a portion of the state's input to be passed to the state's state_task for processing.
|
|
80
79
|
# If omitted, it has the value $ which designates the entire input.
|
|
81
|
-
input_path:
|
|
80
|
+
input_path: InputPath | None
|
|
82
81
|
|
|
83
82
|
# A path that selects a portion of the state's output to be passed to the next state.
|
|
84
83
|
# If omitted, it has the value $ which designates the entire output.
|
|
85
|
-
output_path:
|
|
84
|
+
output_path: OutputPath | None
|
|
86
85
|
|
|
87
|
-
assign_decl:
|
|
86
|
+
assign_decl: AssignDecl | None
|
|
88
87
|
|
|
89
|
-
output:
|
|
88
|
+
output: Output | None
|
|
90
89
|
|
|
91
90
|
state_entered_event_type: Final[HistoryEventType]
|
|
92
|
-
state_exited_event_type: Final[
|
|
91
|
+
state_exited_event_type: Final[HistoryEventType | None]
|
|
93
92
|
|
|
94
93
|
def __init__(
|
|
95
94
|
self,
|
|
96
95
|
state_entered_event_type: HistoryEventType,
|
|
97
|
-
state_exited_event_type:
|
|
96
|
+
state_exited_event_type: HistoryEventType | None,
|
|
98
97
|
):
|
|
99
98
|
self.state_entered_event_type = state_entered_event_type
|
|
100
99
|
self.state_exited_event_type = state_exited_event_type
|
|
@@ -163,7 +162,7 @@ class CommonStateField(EvalComponent, ABC):
|
|
|
163
162
|
event_details["assignedVariablesDetails"] = {"truncated": False} # noqa
|
|
164
163
|
return event_details
|
|
165
164
|
|
|
166
|
-
def _verify_size_quota(self, env: Environment, value:
|
|
165
|
+
def _verify_size_quota(self, env: Environment, value: str | Any) -> None:
|
|
167
166
|
is_within: bool = is_within_size_quota(value)
|
|
168
167
|
if is_within:
|
|
169
168
|
return
|
|
@@ -215,7 +214,7 @@ class CommonStateField(EvalComponent, ABC):
|
|
|
215
214
|
),
|
|
216
215
|
)
|
|
217
216
|
env.states.context_object.context_object_data["State"] = StateData(
|
|
218
|
-
EnteredTime=datetime.datetime.now(tz=datetime.
|
|
217
|
+
EnteredTime=datetime.datetime.now(tz=datetime.UTC).isoformat(), Name=self.name
|
|
219
218
|
)
|
|
220
219
|
|
|
221
220
|
self._eval_state_input(env=env)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from localstack.services.stepfunctions.asl.component.common.assign.assign_decl import AssignDecl
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.common.comment import Comment
|
|
@@ -12,19 +12,19 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ChoiceRule(EvalComponent):
|
|
15
|
-
comparison: Final[
|
|
16
|
-
next_stmt: Final[
|
|
17
|
-
comment: Final[
|
|
18
|
-
assign: Final[
|
|
19
|
-
output: Final[
|
|
15
|
+
comparison: Final[Comparison | None]
|
|
16
|
+
next_stmt: Final[Next | None]
|
|
17
|
+
comment: Final[Comment | None]
|
|
18
|
+
assign: Final[AssignDecl | None]
|
|
19
|
+
output: Final[Output | None]
|
|
20
20
|
|
|
21
21
|
def __init__(
|
|
22
22
|
self,
|
|
23
|
-
comparison:
|
|
24
|
-
next_stmt:
|
|
25
|
-
comment:
|
|
26
|
-
assign:
|
|
27
|
-
output:
|
|
23
|
+
comparison: Comparison | None,
|
|
24
|
+
next_stmt: Next | None,
|
|
25
|
+
comment: Comment | None,
|
|
26
|
+
assign: AssignDecl | None,
|
|
27
|
+
output: Output | None,
|
|
28
28
|
):
|
|
29
29
|
self.comparison = comparison
|
|
30
30
|
self.next_stmt = next_stmt
|
|
@@ -72,7 +72,7 @@ class ComparisonCompositeSingle(ComparisonComposite, abc.ABC):
|
|
|
72
72
|
rule: Final[ChoiceRule]
|
|
73
73
|
|
|
74
74
|
def __init__(self, operator: ComparisonComposite.ChoiceOp, rule: ChoiceRule):
|
|
75
|
-
super(
|
|
75
|
+
super().__init__(operator=operator)
|
|
76
76
|
self.rule = rule
|
|
77
77
|
|
|
78
78
|
|
|
@@ -80,15 +80,13 @@ class ComparisonCompositeMulti(ComparisonComposite, abc.ABC):
|
|
|
80
80
|
rules: Final[list[ChoiceRule]]
|
|
81
81
|
|
|
82
82
|
def __init__(self, operator: ComparisonComposite.ChoiceOp, rules: list[ChoiceRule]):
|
|
83
|
-
super(
|
|
83
|
+
super().__init__(operator=operator)
|
|
84
84
|
self.rules = rules
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
class ComparisonCompositeNot(ComparisonCompositeSingle):
|
|
88
88
|
def __init__(self, rule: ChoiceRule):
|
|
89
|
-
super(
|
|
90
|
-
operator=ComparisonComposite.ChoiceOp.Not, rule=rule
|
|
91
|
-
)
|
|
89
|
+
super().__init__(operator=ComparisonComposite.ChoiceOp.Not, rule=rule)
|
|
92
90
|
|
|
93
91
|
def _eval_body(self, env: Environment) -> None:
|
|
94
92
|
self.rule.eval(env)
|
|
@@ -99,9 +97,7 @@ class ComparisonCompositeNot(ComparisonCompositeSingle):
|
|
|
99
97
|
|
|
100
98
|
class ComparisonCompositeAnd(ComparisonCompositeMulti):
|
|
101
99
|
def __init__(self, rules: list[ChoiceRule]):
|
|
102
|
-
super(
|
|
103
|
-
operator=ComparisonComposite.ChoiceOp.And, rules=rules
|
|
104
|
-
)
|
|
100
|
+
super().__init__(operator=ComparisonComposite.ChoiceOp.And, rules=rules)
|
|
105
101
|
|
|
106
102
|
def _eval_body(self, env: Environment) -> None:
|
|
107
103
|
res = True
|
|
@@ -116,9 +112,7 @@ class ComparisonCompositeAnd(ComparisonCompositeMulti):
|
|
|
116
112
|
|
|
117
113
|
class ComparisonCompositeOr(ComparisonCompositeMulti):
|
|
118
114
|
def __init__(self, rules: list[ChoiceRule]):
|
|
119
|
-
super(
|
|
120
|
-
operator=ComparisonComposite.ChoiceOp.Or, rules=rules
|
|
121
|
-
)
|
|
115
|
+
super().__init__(operator=ComparisonComposite.ChoiceOp.Or, rules=rules)
|
|
122
116
|
|
|
123
117
|
def _eval_body(self, env: Environment) -> None:
|
|
124
118
|
res = False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Any, Final
|
|
3
|
+
from typing import Any, Final
|
|
4
4
|
|
|
5
5
|
from localstack.services.stepfunctions.asl.component.state.state_choice.comparison.comparison_operator_type import (
|
|
6
6
|
ComparisonOperatorType,
|
|
@@ -88,7 +88,7 @@ class IsTimestamp(Operator):
|
|
|
88
88
|
return str(ComparisonOperatorType.IsTimestamp)
|
|
89
89
|
|
|
90
90
|
@staticmethod
|
|
91
|
-
def string_to_timestamp(string: str) ->
|
|
91
|
+
def string_to_timestamp(string: str) -> datetime.datetime | None:
|
|
92
92
|
try:
|
|
93
93
|
return datetime.datetime.strptime(string, IsTimestamp.TIMESTAMP_FORMAT)
|
|
94
94
|
except Exception:
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.stepfunctions import HistoryEventType
|
|
4
2
|
from localstack.services.stepfunctions.asl.component.common.flow.end import End
|
|
5
3
|
from localstack.services.stepfunctions.asl.component.common.flow.next import Next
|
|
@@ -16,10 +14,10 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
|
16
14
|
|
|
17
15
|
class StateChoice(CommonStateField):
|
|
18
16
|
choices_decl: ChoicesDecl
|
|
19
|
-
default_state:
|
|
17
|
+
default_state: DefaultDecl | None
|
|
20
18
|
|
|
21
19
|
def __init__(self):
|
|
22
|
-
super(
|
|
20
|
+
super().__init__(
|
|
23
21
|
state_entered_event_type=HistoryEventType.ChoiceStateEntered,
|
|
24
22
|
state_exited_event_type=HistoryEventType.ChoiceStateExited,
|
|
25
23
|
)
|
|
@@ -27,7 +25,7 @@ class StateChoice(CommonStateField):
|
|
|
27
25
|
self._next_state_name = None
|
|
28
26
|
|
|
29
27
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
30
|
-
super(
|
|
28
|
+
super().from_state_props(state_props)
|
|
31
29
|
self.choices_decl = state_props.get(ChoicesDecl)
|
|
32
30
|
self.default_state = state_props.get(DefaultDecl)
|
|
33
31
|
|
|
@@ -3,7 +3,7 @@ import copy
|
|
|
3
3
|
import logging
|
|
4
4
|
import threading
|
|
5
5
|
from threading import Thread
|
|
6
|
-
from typing import Any
|
|
6
|
+
from typing import Any
|
|
7
7
|
|
|
8
8
|
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
|
9
9
|
from localstack.services.stepfunctions.asl.component.common.catch.catch_decl import CatchDecl
|
|
@@ -44,7 +44,7 @@ class ExecutionState(CommonStateField, abc.ABC):
|
|
|
44
44
|
def __init__(
|
|
45
45
|
self,
|
|
46
46
|
state_entered_event_type: HistoryEventType,
|
|
47
|
-
state_exited_event_type:
|
|
47
|
+
state_exited_event_type: HistoryEventType | None,
|
|
48
48
|
):
|
|
49
49
|
super().__init__(
|
|
50
50
|
state_entered_event_type=state_entered_event_type,
|
|
@@ -54,20 +54,20 @@ class ExecutionState(CommonStateField, abc.ABC):
|
|
|
54
54
|
# Specifies where (in the input) to place the results of executing the state_task that's specified in Resource.
|
|
55
55
|
# The input is then filtered as specified by the OutputPath field (if present) before being used as the
|
|
56
56
|
# state's output.
|
|
57
|
-
self.result_path:
|
|
57
|
+
self.result_path: ResultPath | None = None
|
|
58
58
|
|
|
59
59
|
# ResultSelector (Optional)
|
|
60
60
|
# Pass a collection of key value pairs, where the values are static or selected from the result.
|
|
61
|
-
self.result_selector:
|
|
61
|
+
self.result_selector: ResultSelector | None = None
|
|
62
62
|
|
|
63
63
|
# Retry (Optional)
|
|
64
64
|
# An array of objects, called Retriers, that define a retry policy if the state encounters runtime errors.
|
|
65
|
-
self.retry:
|
|
65
|
+
self.retry: RetryDecl | None = None
|
|
66
66
|
|
|
67
67
|
# Catch (Optional)
|
|
68
68
|
# An array of objects, called Catchers, that define a fallback state. This state is executed if the state
|
|
69
69
|
# encounters runtime errors and its retry policy is exhausted or isn't defined.
|
|
70
|
-
self.catch:
|
|
70
|
+
self.catch: CatchDecl | None = None
|
|
71
71
|
|
|
72
72
|
# TimeoutSeconds (Optional)
|
|
73
73
|
# If the state_task runs longer than the specified seconds, this state fails with a States.Timeout error name.
|
|
@@ -93,7 +93,7 @@ class ExecutionState(CommonStateField, abc.ABC):
|
|
|
93
93
|
# HeartbeatSecondsPath. When resolved, the reference path must select fields whose values are positive integers.
|
|
94
94
|
# A Task state cannot include both HeartbeatSeconds and HeartbeatSecondsPath
|
|
95
95
|
# HeartbeatSeconds and HeartbeatSecondsPath fields are encoded by the Heartbeat type.
|
|
96
|
-
self.heartbeat:
|
|
96
|
+
self.heartbeat: Heartbeat | None = None
|
|
97
97
|
|
|
98
98
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
99
99
|
super().from_state_props(state_props=state_props)
|
|
@@ -170,8 +170,8 @@ class ExecutionState(CommonStateField, abc.ABC):
|
|
|
170
170
|
frame: Environment = env.open_frame()
|
|
171
171
|
frame.states.reset(input_value=env.states.get_input())
|
|
172
172
|
frame.stack = copy.deepcopy(env.stack)
|
|
173
|
-
execution_outputs: list[Any] =
|
|
174
|
-
execution_exceptions: list[
|
|
173
|
+
execution_outputs: list[Any] = []
|
|
174
|
+
execution_exceptions: list[Exception | None] = [None]
|
|
175
175
|
terminated_event = threading.Event()
|
|
176
176
|
|
|
177
177
|
def _exec_and_notify():
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import copy
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.common.parargs import Parargs
|
|
5
5
|
from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
|
|
@@ -26,15 +26,15 @@ from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
|
26
26
|
|
|
27
27
|
class ItemReader(EvalComponent):
|
|
28
28
|
resource_eval: Final[ResourceEval]
|
|
29
|
-
parargs: Final[
|
|
30
|
-
reader_config: Final[
|
|
31
|
-
resource_output_transformer:
|
|
29
|
+
parargs: Final[Parargs | None]
|
|
30
|
+
reader_config: Final[ReaderConfig | None]
|
|
31
|
+
resource_output_transformer: ResourceOutputTransformer | None
|
|
32
32
|
|
|
33
33
|
def __init__(
|
|
34
34
|
self,
|
|
35
35
|
resource: Resource,
|
|
36
|
-
parargs:
|
|
37
|
-
reader_config:
|
|
36
|
+
parargs: Parargs | None,
|
|
37
|
+
reader_config: ReaderConfig | None,
|
|
38
38
|
):
|
|
39
39
|
self.resource_eval = resource_eval_for(resource=resource)
|
|
40
40
|
self.parargs = parargs
|
|
@@ -65,7 +65,7 @@ class ItemReader(EvalComponent):
|
|
|
65
65
|
if self.parargs:
|
|
66
66
|
self.parargs.eval(env=env)
|
|
67
67
|
else:
|
|
68
|
-
env.stack.append(
|
|
68
|
+
env.stack.append({})
|
|
69
69
|
|
|
70
70
|
self.resource_eval.eval_resource(env=env)
|
|
71
71
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final,
|
|
1
|
+
from typing import Final, TypedDict
|
|
2
2
|
|
|
3
3
|
from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_reader.reader_config.csv_header_location import (
|
|
@@ -34,7 +34,7 @@ MaxItemsValueOutput = int
|
|
|
34
34
|
class ReaderConfigOutput(TypedDict):
|
|
35
35
|
InputType: InputTypeOutput
|
|
36
36
|
CSVHeaderLocation: CSVHeaderLocationOutput
|
|
37
|
-
CSVHeaders:
|
|
37
|
+
CSVHeaders: CSVHeadersOutput | None
|
|
38
38
|
MaxItemsValue: MaxItemsValueOutput
|
|
39
39
|
|
|
40
40
|
|
|
@@ -42,14 +42,14 @@ class ReaderConfig(EvalComponent):
|
|
|
42
42
|
input_type: Final[InputType]
|
|
43
43
|
max_items_decl: Final[MaxItemsDecl]
|
|
44
44
|
csv_header_location: Final[CSVHeaderLocation]
|
|
45
|
-
csv_headers:
|
|
45
|
+
csv_headers: CSVHeaders | None
|
|
46
46
|
|
|
47
47
|
def __init__(
|
|
48
48
|
self,
|
|
49
49
|
input_type: InputType,
|
|
50
50
|
csv_header_location: CSVHeaderLocation,
|
|
51
|
-
csv_headers:
|
|
52
|
-
max_items_decl:
|
|
51
|
+
csv_headers: CSVHeaders | None,
|
|
52
|
+
max_items_decl: MaxItemsDecl | None,
|
|
53
53
|
):
|
|
54
54
|
self.input_type = input_type
|
|
55
55
|
self.max_items_decl = max_items_decl or MaxItemsInt()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from typing import Final
|
|
4
5
|
|
|
5
6
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_reader.resource_eval.resource_eval import (
|
|
6
7
|
ResourceEval,
|
|
@@ -59,9 +59,9 @@ class ResourceOutputTransformerCSV(ResourceOutputTransformer):
|
|
|
59
59
|
)
|
|
60
60
|
raise FailureEventException(failure_event=failure_event)
|
|
61
61
|
|
|
62
|
-
transformed_outputs =
|
|
62
|
+
transformed_outputs = []
|
|
63
63
|
for row in csv_reader_slice:
|
|
64
|
-
transformed_output =
|
|
64
|
+
transformed_output = {}
|
|
65
65
|
for i, header in enumerate(headers):
|
|
66
66
|
transformed_output[header] = row[i] if i < len(row) else ""
|
|
67
67
|
transformed_outputs.append(
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import json
|
|
5
|
-
from typing import Any, Final
|
|
5
|
+
from typing import Any, Final
|
|
6
6
|
|
|
7
7
|
from localstack.aws.api.stepfunctions import (
|
|
8
8
|
HistoryEventType,
|
|
@@ -50,8 +50,8 @@ from localstack.services.stepfunctions.asl.eval.event.event_manager import (
|
|
|
50
50
|
|
|
51
51
|
|
|
52
52
|
class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
|
|
53
|
-
item_reader: Final[
|
|
54
|
-
label: Final[
|
|
53
|
+
item_reader: Final[ItemReader | None]
|
|
54
|
+
label: Final[str | None]
|
|
55
55
|
map_run_record: Final[MapRunRecord]
|
|
56
56
|
|
|
57
57
|
def __init__(
|
|
@@ -59,12 +59,12 @@ class DistributedIterationComponentEvalInput(InlineIterationComponentEvalInput):
|
|
|
59
59
|
state_name: str,
|
|
60
60
|
max_concurrency: int,
|
|
61
61
|
input_items: list[json],
|
|
62
|
-
parameters:
|
|
63
|
-
item_selector:
|
|
64
|
-
item_reader:
|
|
62
|
+
parameters: Parameters | None,
|
|
63
|
+
item_selector: ItemSelector | None,
|
|
64
|
+
item_reader: ItemReader | None,
|
|
65
65
|
tolerated_failure_count: int,
|
|
66
66
|
tolerated_failure_percentage: float,
|
|
67
|
-
label:
|
|
67
|
+
label: str | None,
|
|
68
68
|
map_run_record: MapRunRecord,
|
|
69
69
|
):
|
|
70
70
|
super().__init__(
|
|
@@ -118,7 +118,7 @@ class DistributedIterationComponent(InlineIterationComponent, abc.ABC):
|
|
|
118
118
|
|
|
119
119
|
job_pool.await_jobs()
|
|
120
120
|
|
|
121
|
-
worker_exception:
|
|
121
|
+
worker_exception: Exception | None = job_pool.get_worker_exception()
|
|
122
122
|
if worker_exception is not None:
|
|
123
123
|
raise worker_exception
|
|
124
124
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import abc
|
|
4
4
|
import json
|
|
5
5
|
import threading
|
|
6
|
-
from typing import Any, Final
|
|
6
|
+
from typing import Any, Final
|
|
7
7
|
|
|
8
8
|
from localstack.services.stepfunctions.asl.component.common.comment import Comment
|
|
9
9
|
from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
|
|
@@ -38,16 +38,16 @@ class InlineIterationComponentEvalInput:
|
|
|
38
38
|
state_name: Final[str]
|
|
39
39
|
max_concurrency: Final[int]
|
|
40
40
|
input_items: Final[list[json]]
|
|
41
|
-
parameters: Final[
|
|
42
|
-
item_selector: Final[
|
|
41
|
+
parameters: Final[Parameters | None]
|
|
42
|
+
item_selector: Final[ItemSelector | None]
|
|
43
43
|
|
|
44
44
|
def __init__(
|
|
45
45
|
self,
|
|
46
46
|
state_name: str,
|
|
47
47
|
max_concurrency: int,
|
|
48
48
|
input_items: list[json],
|
|
49
|
-
parameters:
|
|
50
|
-
item_selector:
|
|
49
|
+
parameters: Parameters | None,
|
|
50
|
+
item_selector: ItemSelector | None,
|
|
51
51
|
):
|
|
52
52
|
self.state_name = state_name
|
|
53
53
|
self.max_concurrency = max_concurrency
|
|
@@ -65,7 +65,7 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
|
|
|
65
65
|
start_at: StartAt,
|
|
66
66
|
states: States,
|
|
67
67
|
processor_config: ProcessorConfig,
|
|
68
|
-
comment:
|
|
68
|
+
comment: Comment | None,
|
|
69
69
|
):
|
|
70
70
|
super().__init__(
|
|
71
71
|
query_language=query_language, start_at=start_at, states=states, comment=comment
|
|
@@ -105,7 +105,7 @@ class InlineIterationComponent(IterationComponent, abc.ABC):
|
|
|
105
105
|
|
|
106
106
|
job_pool.await_jobs()
|
|
107
107
|
|
|
108
|
-
worker_exception:
|
|
108
|
+
worker_exception: Exception | None = job_pool.get_worker_exception()
|
|
109
109
|
if worker_exception is not None:
|
|
110
110
|
raise worker_exception
|
|
111
111
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
|
|
5
5
|
FailureEventException,
|
|
@@ -44,8 +44,8 @@ class DistributedItemProcessorWorker(InlineItemProcessorWorker):
|
|
|
44
44
|
job_pool: JobPool,
|
|
45
45
|
env: Environment,
|
|
46
46
|
item_reader: ItemReader,
|
|
47
|
-
parameters:
|
|
48
|
-
item_selector:
|
|
47
|
+
parameters: Parameters | None,
|
|
48
|
+
item_selector: ItemSelector | None,
|
|
49
49
|
map_run_record: MapRunRecord,
|
|
50
50
|
):
|
|
51
51
|
super().__init__(
|
|
@@ -124,7 +124,7 @@ class DistributedItemProcessorWorker(InlineItemProcessorWorker):
|
|
|
124
124
|
self._map_run_record.item_counter.running.offset(-1)
|
|
125
125
|
job.job_output = job_output
|
|
126
126
|
|
|
127
|
-
def _eval_pool(self, job:
|
|
127
|
+
def _eval_pool(self, job: Job | None, worker_frame: Environment) -> None:
|
|
128
128
|
if job is None:
|
|
129
129
|
self._env.delete_frame(worker_frame)
|
|
130
130
|
return
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.common.parargs import Parameters
|
|
5
5
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_map.item_selector import (
|
|
@@ -17,16 +17,16 @@ LOG = logging.getLogger(__name__)
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
class InlineItemProcessorWorker(IterationWorker):
|
|
20
|
-
_parameters: Final[
|
|
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
|
|
@@ -2,7 +2,7 @@ import abc
|
|
|
2
2
|
import datetime
|
|
3
3
|
import threading
|
|
4
4
|
from collections import OrderedDict
|
|
5
|
-
from typing import Final
|
|
5
|
+
from typing import Final
|
|
6
6
|
|
|
7
7
|
from localstack.aws.api.stepfunctions import (
|
|
8
8
|
Arn,
|
|
@@ -98,7 +98,7 @@ class MapRunRecord:
|
|
|
98
98
|
item_counter: Final[ItemCounter]
|
|
99
99
|
start_date: Timestamp
|
|
100
100
|
status: MapRunStatus
|
|
101
|
-
stop_date:
|
|
101
|
+
stop_date: Timestamp | None
|
|
102
102
|
# TODO: add support for failure toleration fields.
|
|
103
103
|
tolerated_failure_count: int
|
|
104
104
|
tolerated_failure_percentage: float
|
|
@@ -110,7 +110,7 @@ class MapRunRecord:
|
|
|
110
110
|
max_concurrency: int,
|
|
111
111
|
tolerated_failure_count: int,
|
|
112
112
|
tolerated_failure_percentage: float,
|
|
113
|
-
label:
|
|
113
|
+
label: str | None,
|
|
114
114
|
):
|
|
115
115
|
self.update_event = threading.Event()
|
|
116
116
|
(
|
|
@@ -123,7 +123,7 @@ class MapRunRecord:
|
|
|
123
123
|
self.max_concurrency = max_concurrency
|
|
124
124
|
self.execution_counter = ExecutionCounter()
|
|
125
125
|
self.item_counter = ItemCounter()
|
|
126
|
-
self.start_date = datetime.datetime.now(tz=datetime.
|
|
126
|
+
self.start_date = datetime.datetime.now(tz=datetime.UTC)
|
|
127
127
|
self.status = MapRunStatus.RUNNING
|
|
128
128
|
self.stop_date = None
|
|
129
129
|
self.tolerated_failure_count = tolerated_failure_count
|
|
@@ -131,7 +131,7 @@ class MapRunRecord:
|
|
|
131
131
|
|
|
132
132
|
@staticmethod
|
|
133
133
|
def _generate_map_run_arns(
|
|
134
|
-
state_machine_arn: Arn, label:
|
|
134
|
+
state_machine_arn: Arn, label: str | None
|
|
135
135
|
) -> tuple[LongArn, LongArn]:
|
|
136
136
|
# Generate a new MapRunArn given the StateMachineArn, such that:
|
|
137
137
|
# inp: arn:aws:states:<region>:111111111111:stateMachine:<ArnPart_0idx>
|
|
@@ -144,7 +144,7 @@ class MapRunRecord:
|
|
|
144
144
|
|
|
145
145
|
def set_stop(self, status: MapRunStatus):
|
|
146
146
|
self.status = status
|
|
147
|
-
self.stop_date = datetime.datetime.now(tz=datetime.
|
|
147
|
+
self.stop_date = datetime.datetime.now(tz=datetime.UTC)
|
|
148
148
|
|
|
149
149
|
def describe(self) -> DescribeMapRunOutput:
|
|
150
150
|
describe_output = DescribeMapRunOutput(
|
|
@@ -176,9 +176,9 @@ class MapRunRecord:
|
|
|
176
176
|
|
|
177
177
|
def update(
|
|
178
178
|
self,
|
|
179
|
-
max_concurrency:
|
|
180
|
-
tolerated_failure_count:
|
|
181
|
-
tolerated_failure_percentage:
|
|
179
|
+
max_concurrency: int | None,
|
|
180
|
+
tolerated_failure_count: int | None,
|
|
181
|
+
tolerated_failure_percentage: float | None,
|
|
182
182
|
) -> None:
|
|
183
183
|
if max_concurrency is not None:
|
|
184
184
|
self.max_concurrency = max_concurrency
|
|
@@ -198,7 +198,7 @@ class MapRunRecordPoolManager:
|
|
|
198
198
|
def add(self, map_run_record: MapRunRecord) -> None:
|
|
199
199
|
self._pool[map_run_record.map_run_arn] = map_run_record
|
|
200
200
|
|
|
201
|
-
def get(self, map_run_arn: LongArn) ->
|
|
201
|
+
def get(self, map_run_arn: LongArn) -> MapRunRecord | None:
|
|
202
202
|
return self._pool.get(map_run_arn)
|
|
203
203
|
|
|
204
204
|
def get_all(self) -> list[MapRunRecord]:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
|
-
from typing import Final
|
|
4
|
+
from typing import Final
|
|
5
5
|
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.common.comment import Comment
|
|
7
7
|
from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
|
|
@@ -18,14 +18,14 @@ class IterationComponent(EvalComponent, abc.ABC):
|
|
|
18
18
|
_query_language: Final[QueryLanguage]
|
|
19
19
|
_start_at: Final[StartAt]
|
|
20
20
|
_states: Final[States]
|
|
21
|
-
_comment: Final[
|
|
21
|
+
_comment: Final[Comment | None]
|
|
22
22
|
|
|
23
23
|
def __init__(
|
|
24
24
|
self,
|
|
25
25
|
query_language: QueryLanguage,
|
|
26
26
|
start_at: StartAt,
|
|
27
27
|
states: States,
|
|
28
|
-
comment:
|
|
28
|
+
comment: Comment | None,
|
|
29
29
|
):
|
|
30
30
|
self._query_language = query_language
|
|
31
31
|
self._start_at = start_at
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from localstack.services.stepfunctions.asl.component.common.comment import Comment
|
|
4
4
|
from localstack.services.stepfunctions.asl.component.common.flow.start_at import StartAt
|
|
@@ -11,7 +11,7 @@ from localstack.services.stepfunctions.asl.component.state.state_execution.state
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class IterationDecl(Component):
|
|
14
|
-
comment: Final[
|
|
14
|
+
comment: Final[Comment | None]
|
|
15
15
|
query_language: Final[QueryLanguage]
|
|
16
16
|
start_at: Final[StartAt]
|
|
17
17
|
states: Final[States]
|
|
@@ -19,7 +19,7 @@ class IterationDecl(Component):
|
|
|
19
19
|
|
|
20
20
|
def __init__(
|
|
21
21
|
self,
|
|
22
|
-
comment:
|
|
22
|
+
comment: Comment | None,
|
|
23
23
|
query_language: QueryLanguage,
|
|
24
24
|
start_at: StartAt,
|
|
25
25
|
states: States,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import HistoryEventType, MapIterationEventDetails
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
@@ -169,7 +169,7 @@ class IterationWorker(abc.ABC):
|
|
|
169
169
|
finally:
|
|
170
170
|
job.job_output = job_output
|
|
171
171
|
|
|
172
|
-
def _eval_pool(self, job:
|
|
172
|
+
def _eval_pool(self, job: Job | None, worker_frame: Environment) -> None:
|
|
173
173
|
# Note: the frame has to be closed before the job, to ensure the owner environment is correctly updated
|
|
174
174
|
# before the evaluation continues; map states await for job termination not workers termination.
|
|
175
175
|
if job is None:
|