localstack-core 4.7.1.dev23__py3-none-any.whl → 4.7.1.dev24__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/aws/api/apigateway/__init__.py +87 -110
- localstack/aws/api/core.py +2 -3
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/logs/__init__.py +5 -8
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +7 -9
- localstack/aws/connect.py +40 -39
- localstack/aws/forwarder.py +5 -4
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +1 -2
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/logging.py +1 -2
- localstack/aws/handlers/metric_handler.py +3 -4
- localstack/aws/handlers/service.py +5 -5
- localstack/aws/mocking.py +15 -24
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +16 -17
- localstack/aws/protocol/serializer.py +37 -40
- localstack/aws/protocol/service_router.py +13 -13
- localstack/aws/protocol/validate.py +5 -5
- localstack/aws/scaffold.py +8 -9
- 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 +7 -8
- localstack/aws/spec.py +29 -30
- localstack/cli/localstack.py +6 -6
- localstack/cli/lpm.py +2 -2
- localstack/config.py +14 -15
- localstack/deprecations.py +5 -5
- localstack/dev/run/__main__.py +4 -4
- localstack/dev/run/paths.py +5 -5
- localstack/dns/models.py +2 -1
- localstack/dns/server.py +3 -2
- 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 +3 -3
- localstack/packages/api.py +5 -5
- localstack/packages/core.py +3 -3
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +1 -2
- localstack/packages/terraform.py +1 -2
- localstack/runtime/init.py +6 -7
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +6 -6
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +20 -20
- localstack/services/apigateway/legacy/integration.py +7 -7
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +5 -5
- 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/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +1 -1
- 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 +6 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +9 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- 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 +5 -5
- 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 +2 -2
- 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/cfn_utils.py +1 -1
- localstack/services/cloudformation/deployment_utils.py +2 -2
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +12 -12
- localstack/services/cloudformation/engine/parameters.py +3 -3
- localstack/services/cloudformation/engine/template_deployer.py +9 -10
- localstack/services/cloudformation/engine/transformers.py +5 -4
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +9 -8
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +9 -9
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +15 -14
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +5 -5
- localstack/services/cloudformation/provider_utils.py +2 -2
- localstack/services/cloudformation/resource_provider.py +10 -9
- 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/scaffolding/__main__.py +8 -7
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/stores.py +2 -3
- localstack/services/cloudformation/v2/entities.py +7 -7
- localstack/services/cloudformation/v2/provider.py +10 -10
- localstack/services/cloudwatch/alarm_scheduler.py +7 -7
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +12 -12
- localstack/services/cloudwatch/provider_v2.py +2 -4
- 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 +1 -2
- localstack/services/dynamodb/provider.py +7 -8
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +6 -7
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +4 -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 +13 -13
- 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 +17 -17
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +5 -5
- localstack/services/es/provider.py +19 -19
- 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/models.py +25 -25
- localstack/services/events/provider.py +12 -12
- 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 +5 -5
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +10 -10
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +11 -12
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +4 -4
- 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/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +2 -3
- localstack/services/kinesis/packages.py +3 -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 +14 -17
- localstack/services/kms/provider.py +2 -3
- 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 +3 -2
- localstack/services/lambda_/api_utils.py +12 -12
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +1 -1
- 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_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +5 -4
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +5 -5
- localstack/services/lambda_/invocation/internal_sqs_queue.py +1 -1
- localstack/services/lambda_/invocation/lambda_models.py +23 -23
- localstack/services/lambda_/invocation/lambda_service.py +4 -4
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/ldm.py +2 -3
- localstack/services/lambda_/packages.py +2 -3
- localstack/services/lambda_/provider.py +3 -3
- 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 +14 -14
- 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/logs/models.py +1 -3
- localstack/services/logs/provider.py +3 -3
- 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 +3 -3
- localstack/services/opensearch/cluster.py +13 -13
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +1 -2
- localstack/services/opensearch/provider.py +7 -8
- 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 +1 -3
- localstack/services/plugins.py +26 -25
- 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/cors.py +4 -4
- localstack/services/s3/models.py +72 -72
- localstack/services/s3/notifications.py +19 -19
- localstack/services/s3/presigned_url.py +6 -5
- localstack/services/s3/provider.py +13 -14
- 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 +11 -11
- localstack/services/s3/validation.py +1 -1
- localstack/services/s3/website_hosting.py +5 -5
- 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 +9 -11
- 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/provider.py +8 -8
- 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/models.py +25 -25
- localstack/services/sns/provider.py +1 -2
- localstack/services/sns/publisher.py +6 -7
- 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/sqs/models.py +21 -22
- localstack/services/sqs/provider.py +19 -18
- localstack/services/sqs/query_api.py +2 -3
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +4 -4
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +3 -3
- localstack/services/ssm/provider.py +2 -3
- 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/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/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +2 -2
- 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 +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +2 -2
- localstack/services/stepfunctions/asl/component/program/program.py +8 -8
- 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/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +1 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +6 -6
- 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/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 +10 -11
- 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 +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +6 -6
- 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 +15 -15
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +5 -4
- 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 +2 -2
- 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 +2 -4
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +3 -5
- 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 +15 -17
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +9 -9
- 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 +11 -11
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +3 -3
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +5 -4
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +1 -2
- localstack/services/stepfunctions/asl/parse/preprocessor.py +30 -30
- localstack/services/stepfunctions/asl/parse/typed_props.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 +6 -6
- localstack/services/stepfunctions/backend/execution.py +25 -27
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +26 -26
- 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 +5 -5
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/provider.py +27 -37
- 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 +7 -7
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +2 -2
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +16 -15
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +3 -2
- localstack/testing/pytest/container.py +5 -4
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +11 -11
- localstack/testing/pytest/marking.py +6 -6
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/utils.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -3
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +2 -2
- 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/metrics/registry.py +1 -1
- localstack/utils/analytics/publisher.py +4 -4
- localstack/utils/analytics/service_request_aggregator.py +3 -3
- localstack/utils/aws/arns.py +2 -2
- localstack/utils/aws/aws_responses.py +14 -21
- localstack/utils/aws/aws_stack.py +7 -11
- localstack/utils/aws/dead_letter_queue.py +3 -4
- localstack/utils/aws/message_forwarding.py +9 -11
- localstack/utils/aws/request_context.py +4 -4
- localstack/utils/aws/templating.py +3 -3
- localstack/utils/batch_policy.py +2 -2
- localstack/utils/bootstrap.py +19 -20
- localstack/utils/collections.py +16 -23
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +3 -3
- localstack/utils/container_utils/container_client.py +72 -75
- localstack/utils/container_utils/docker_cmd_client.py +33 -33
- localstack/utils/container_utils/docker_sdk_client.py +35 -35
- localstack/utils/crypto.py +2 -3
- localstack/utils/diagnose.py +11 -11
- localstack/utils/docker_utils.py +4 -4
- localstack/utils/files.py +1 -2
- localstack/utils/functions.py +2 -2
- localstack/utils/http.py +6 -6
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +1 -1
- localstack/utils/net.py +10 -9
- localstack/utils/objects.py +10 -10
- localstack/utils/patch.py +5 -5
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +7 -7
- localstack/utils/scheduler.py +3 -2
- localstack/utils/strings.py +2 -2
- localstack/utils/tagging.py +3 -3
- localstack/utils/testutil.py +9 -9
- localstack/utils/threads.py +2 -2
- localstack/utils/xml.py +1 -1
- localstack/version.py +2 -2
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/RECORD +544 -544
- localstack_core-4.7.1.dev24.dist-info/plux.json +1 -0
- localstack_core-4.7.1.dev23.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev24.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev24.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev23.data → localstack_core-4.7.1.dev24.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev23.dist-info → localstack_core-4.7.1.dev24.dist-info}/top_level.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any, Final
|
|
1
|
+
from typing import Any, Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -45,7 +45,7 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
|
|
|
45
45
|
def __init__(self):
|
|
46
46
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
47
47
|
|
|
48
|
-
def _get_supported_parameters(self) ->
|
|
48
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
49
49
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
50
50
|
|
|
51
51
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -70,8 +70,8 @@ class StateTaskServiceSqs(StateTaskServiceCallback):
|
|
|
70
70
|
def _normalise_response(
|
|
71
71
|
self,
|
|
72
72
|
response: Any,
|
|
73
|
-
boto_service_name:
|
|
74
|
-
service_action_name:
|
|
73
|
+
boto_service_name: str | None = None,
|
|
74
|
+
service_action_name: str | None = None,
|
|
75
75
|
) -> None:
|
|
76
76
|
super()._normalise_response(
|
|
77
77
|
response=response,
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py
CHANGED
|
@@ -31,8 +31,8 @@ from localstack.services.stepfunctions.asl.eval.event.event_detail import EventD
|
|
|
31
31
|
|
|
32
32
|
class StateTask(ExecutionState, abc.ABC):
|
|
33
33
|
resource: Resource
|
|
34
|
-
parargs:
|
|
35
|
-
credentials:
|
|
34
|
+
parargs: Parargs | None
|
|
35
|
+
credentials: Credentials | None
|
|
36
36
|
|
|
37
37
|
def __init__(self):
|
|
38
38
|
super(StateTask, self).__init__(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Any
|
|
4
4
|
|
|
5
5
|
from botocore.exceptions import ClientError
|
|
6
6
|
|
|
@@ -94,7 +94,7 @@ class StateTaskLambda(StateTask):
|
|
|
94
94
|
),
|
|
95
95
|
)
|
|
96
96
|
|
|
97
|
-
def _verify_size_quota(self, env: Environment, value:
|
|
97
|
+
def _verify_size_quota(self, env: Environment, value: str | Any) -> None:
|
|
98
98
|
is_within: bool = is_within_size_quota(value=value)
|
|
99
99
|
if is_within:
|
|
100
100
|
return
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
|
4
2
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
5
3
|
CustomErrorName,
|
|
@@ -22,8 +20,8 @@ class StateFail(CommonStateField):
|
|
|
22
20
|
state_entered_event_type=HistoryEventType.FailStateEntered,
|
|
23
21
|
state_exited_event_type=None,
|
|
24
22
|
)
|
|
25
|
-
self.cause:
|
|
26
|
-
self.error:
|
|
23
|
+
self.cause: CauseDecl | None = None
|
|
24
|
+
self.error: ErrorDecl | None = None
|
|
27
25
|
|
|
28
26
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
29
27
|
super(StateFail, self).from_state_props(state_props)
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional
|
|
2
|
-
|
|
3
1
|
from localstack.aws.api.stepfunctions import (
|
|
4
2
|
HistoryEventType,
|
|
5
3
|
)
|
|
@@ -21,17 +19,17 @@ class StatePass(CommonStateField):
|
|
|
21
19
|
# Result (Optional)
|
|
22
20
|
# Refers to the output of a virtual state_task that is passed on to the next state. If you include the ResultPath
|
|
23
21
|
# field in your state machine definition, Result is placed as specified by ResultPath and passed on to the
|
|
24
|
-
self.result:
|
|
22
|
+
self.result: Result | None = None
|
|
25
23
|
|
|
26
24
|
# ResultPath (Optional)
|
|
27
25
|
# Specifies where to place the output (relative to the input) of the virtual state_task specified in Result. The input
|
|
28
26
|
# is further filtered as specified by the OutputPath field (if present) before being used as the state's output.
|
|
29
|
-
self.result_path:
|
|
27
|
+
self.result_path: ResultPath | None = None
|
|
30
28
|
|
|
31
29
|
# Parameters (Optional)
|
|
32
30
|
# Creates a collection of key-value pairs that will be passed as input. You can specify Parameters as a static
|
|
33
31
|
# value or select from the input using a path.
|
|
34
|
-
self.parameters:
|
|
32
|
+
self.parameters: Parameters | None = None
|
|
35
33
|
|
|
36
34
|
def from_state_props(self, state_props: StateProps) -> None:
|
|
37
35
|
super(StatePass, self).from_state_props(state_props)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import re
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, HistoryEventType
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.common.error_name.failure_event import (
|
|
@@ -47,7 +47,7 @@ class Timestamp(WaitFunction):
|
|
|
47
47
|
return re.match(TIMESTAMP_PATTERN, timestamp) is not None
|
|
48
48
|
|
|
49
49
|
@staticmethod
|
|
50
|
-
def _from_timestamp_string(timestamp: str) ->
|
|
50
|
+
def _from_timestamp_string(timestamp: str) -> datetime.datetime | None:
|
|
51
51
|
if not Timestamp._is_valid_timestamp_pattern(timestamp):
|
|
52
52
|
return None
|
|
53
53
|
try:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import abc
|
|
2
2
|
from collections import OrderedDict
|
|
3
3
|
from threading import Event, Lock
|
|
4
|
-
from typing import Final
|
|
4
|
+
from typing import Final
|
|
5
5
|
|
|
6
6
|
from localstack.aws.api.stepfunctions import ActivityDoesNotExist, Arn
|
|
7
7
|
from localstack.services.stepfunctions.backend.activity import Activity, ActivityTask
|
|
@@ -26,10 +26,10 @@ class CallbackOutcomeSuccess(CallbackOutcome):
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class CallbackOutcomeFailure(CallbackOutcome):
|
|
29
|
-
error: Final[
|
|
30
|
-
cause: Final[
|
|
29
|
+
error: Final[str | None]
|
|
30
|
+
cause: Final[str | None]
|
|
31
31
|
|
|
32
|
-
def __init__(self, callback_id: CallbackId, error:
|
|
32
|
+
def __init__(self, callback_id: CallbackId, error: str | None, cause: str | None):
|
|
33
33
|
super().__init__(callback_id=callback_id)
|
|
34
34
|
self.error = error
|
|
35
35
|
self.cause = cause
|
|
@@ -85,20 +85,20 @@ class HeartbeatTimedOut(CallbackConsumerError):
|
|
|
85
85
|
|
|
86
86
|
|
|
87
87
|
class ActivityTaskStartOutcome:
|
|
88
|
-
worker_name:
|
|
88
|
+
worker_name: str | None
|
|
89
89
|
|
|
90
|
-
def __init__(self, worker_name:
|
|
90
|
+
def __init__(self, worker_name: str | None = None):
|
|
91
91
|
self.worker_name = worker_name
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
class ActivityTaskStartEndpoint:
|
|
95
95
|
_next_activity_task_start_event: Final[Event]
|
|
96
|
-
_outcome:
|
|
96
|
+
_outcome: ActivityTaskStartOutcome | None
|
|
97
97
|
|
|
98
98
|
def __init__(self):
|
|
99
99
|
self._next_activity_task_start_event = Event()
|
|
100
100
|
|
|
101
|
-
def wait(self, timeout_seconds: float) ->
|
|
101
|
+
def wait(self, timeout_seconds: float) -> ActivityTaskStartOutcome | None:
|
|
102
102
|
self._next_activity_task_start_event.wait(timeout=timeout_seconds)
|
|
103
103
|
return self._outcome
|
|
104
104
|
|
|
@@ -110,9 +110,9 @@ class ActivityTaskStartEndpoint:
|
|
|
110
110
|
class CallbackEndpoint:
|
|
111
111
|
callback_id: Final[CallbackId]
|
|
112
112
|
_notify_event: Final[Event]
|
|
113
|
-
_outcome:
|
|
114
|
-
consumer_error:
|
|
115
|
-
_heartbeat_endpoint:
|
|
113
|
+
_outcome: CallbackOutcome | None
|
|
114
|
+
consumer_error: CallbackConsumerError | None
|
|
115
|
+
_heartbeat_endpoint: HeartbeatEndpoint | None
|
|
116
116
|
|
|
117
117
|
def __init__(self, callback_id: CallbackId):
|
|
118
118
|
self.callback_id = callback_id
|
|
@@ -144,11 +144,11 @@ class CallbackEndpoint:
|
|
|
144
144
|
self._heartbeat_endpoint.notify()
|
|
145
145
|
return True
|
|
146
146
|
|
|
147
|
-
def wait(self, timeout:
|
|
147
|
+
def wait(self, timeout: float | None = None) -> CallbackOutcome | None:
|
|
148
148
|
self._notify_event.wait(timeout=timeout)
|
|
149
149
|
return self._outcome
|
|
150
150
|
|
|
151
|
-
def get_outcome(self) ->
|
|
151
|
+
def get_outcome(self) -> CallbackOutcome | None:
|
|
152
152
|
return self._outcome
|
|
153
153
|
|
|
154
154
|
def report(self, consumer_error: CallbackConsumerError) -> None:
|
|
@@ -170,7 +170,7 @@ class ActivityCallbackEndpoint(CallbackEndpoint):
|
|
|
170
170
|
def get_activity_task_start_endpoint(self) -> ActivityTaskStartEndpoint:
|
|
171
171
|
return self._activity_task_start_endpoint
|
|
172
172
|
|
|
173
|
-
def notify_activity_task_start(self, worker_name:
|
|
173
|
+
def notify_activity_task_start(self, worker_name: str | None) -> None:
|
|
174
174
|
self._activity_task_start_endpoint.notify(ActivityTaskStartOutcome(worker_name=worker_name))
|
|
175
175
|
|
|
176
176
|
|
|
@@ -196,7 +196,7 @@ class CallbackPoolManager:
|
|
|
196
196
|
self._activity_store = activity_store
|
|
197
197
|
self._pool = OrderedDict()
|
|
198
198
|
|
|
199
|
-
def get(self, callback_id: CallbackId) ->
|
|
199
|
+
def get(self, callback_id: CallbackId) -> CallbackEndpoint | None:
|
|
200
200
|
return self._pool.get(callback_id)
|
|
201
201
|
|
|
202
202
|
def add(self, callback_id: CallbackId) -> CallbackEndpoint:
|
|
@@ -212,7 +212,7 @@ class CallbackPoolManager:
|
|
|
212
212
|
if callback_id in self._pool:
|
|
213
213
|
raise ValueError("Duplicate callback token id value.")
|
|
214
214
|
|
|
215
|
-
maybe_activity:
|
|
215
|
+
maybe_activity: Activity | None = self._activity_store.get(activity_arn)
|
|
216
216
|
if maybe_activity is None:
|
|
217
217
|
raise ActivityDoesNotExist()
|
|
218
218
|
|
|
@@ -232,7 +232,7 @@ class CallbackPoolManager:
|
|
|
232
232
|
if callback_endpoint is None:
|
|
233
233
|
return False
|
|
234
234
|
|
|
235
|
-
consumer_error:
|
|
235
|
+
consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
|
|
236
236
|
if consumer_error is not None:
|
|
237
237
|
raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
|
|
238
238
|
|
|
@@ -244,7 +244,7 @@ class CallbackPoolManager:
|
|
|
244
244
|
if callback_endpoint is None:
|
|
245
245
|
return False
|
|
246
246
|
|
|
247
|
-
consumer_error:
|
|
247
|
+
consumer_error: CallbackConsumerError | None = callback_endpoint.consumer_error
|
|
248
248
|
if consumer_error is not None:
|
|
249
249
|
raise CallbackNotifyConsumerError(callback_consumer_error=consumer_error)
|
|
250
250
|
|
|
@@ -41,18 +41,18 @@ LOG = logging.getLogger(__name__)
|
|
|
41
41
|
|
|
42
42
|
class Environment:
|
|
43
43
|
_state_mutex: Final[threading.RLock()]
|
|
44
|
-
_program_state:
|
|
44
|
+
_program_state: ProgramState | None
|
|
45
45
|
program_state_event: Final[threading.Event()]
|
|
46
46
|
|
|
47
47
|
event_manager: EventManager
|
|
48
48
|
event_history_context: Final[EventHistoryContext]
|
|
49
|
-
cloud_watch_logging_session: Final[
|
|
49
|
+
cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
|
|
50
50
|
aws_execution_details: Final[AWSExecutionDetails]
|
|
51
51
|
execution_type: Final[StateMachineType]
|
|
52
52
|
callback_pool_manager: CallbackPoolManager
|
|
53
53
|
map_run_record_pool_manager: MapRunRecordPoolManager
|
|
54
54
|
activity_store: Final[dict[Arn, Activity]]
|
|
55
|
-
mock_test_case:
|
|
55
|
+
mock_test_case: MockTestCase | None = None
|
|
56
56
|
|
|
57
57
|
_frames: Final[list[Environment]]
|
|
58
58
|
_is_frame: bool = False
|
|
@@ -68,10 +68,10 @@ class Environment:
|
|
|
68
68
|
execution_type: StateMachineType,
|
|
69
69
|
context: ContextObjectData,
|
|
70
70
|
event_history_context: EventHistoryContext,
|
|
71
|
-
cloud_watch_logging_session:
|
|
71
|
+
cloud_watch_logging_session: CloudWatchLoggingSession | None,
|
|
72
72
|
activity_store: dict[Arn, Activity],
|
|
73
|
-
variable_store:
|
|
74
|
-
mock_test_case:
|
|
73
|
+
variable_store: VariableStore | None = None,
|
|
74
|
+
mock_test_case: MockTestCase | None = None,
|
|
75
75
|
):
|
|
76
76
|
super(Environment, self).__init__()
|
|
77
77
|
self._state_mutex = threading.RLock()
|
|
@@ -101,7 +101,7 @@ class Environment:
|
|
|
101
101
|
|
|
102
102
|
@classmethod
|
|
103
103
|
def as_frame_of(
|
|
104
|
-
cls, env: Environment, event_history_frame_cache:
|
|
104
|
+
cls, env: Environment, event_history_frame_cache: EventHistoryContext | None = None
|
|
105
105
|
) -> Environment:
|
|
106
106
|
return Environment.as_inner_frame_of(
|
|
107
107
|
env=env,
|
|
@@ -114,7 +114,7 @@ class Environment:
|
|
|
114
114
|
cls,
|
|
115
115
|
env: Environment,
|
|
116
116
|
variable_store: VariableStore,
|
|
117
|
-
event_history_frame_cache:
|
|
117
|
+
event_history_frame_cache: EventHistoryContext | None = None,
|
|
118
118
|
) -> Environment:
|
|
119
119
|
# Construct the frame's context object data.
|
|
120
120
|
context = ContextObjectData(
|
|
@@ -153,8 +153,8 @@ class Environment:
|
|
|
153
153
|
return frame
|
|
154
154
|
|
|
155
155
|
@property
|
|
156
|
-
def next_state_name(self) ->
|
|
157
|
-
next_state_name:
|
|
156
|
+
def next_state_name(self) -> str | None:
|
|
157
|
+
next_state_name: str | None = None
|
|
158
158
|
program_state = self._program_state
|
|
159
159
|
if isinstance(program_state, ProgramRunning):
|
|
160
160
|
next_state_name = program_state.next_state_name
|
|
@@ -173,8 +173,8 @@ class Environment:
|
|
|
173
173
|
)
|
|
174
174
|
|
|
175
175
|
@property
|
|
176
|
-
def next_field_name(self) ->
|
|
177
|
-
next_field_name:
|
|
176
|
+
def next_field_name(self) -> str | None:
|
|
177
|
+
next_field_name: str | None = None
|
|
178
178
|
program_state = self._program_state
|
|
179
179
|
if isinstance(program_state, ProgramRunning):
|
|
180
180
|
next_field_name = program_state.next_field_name
|
|
@@ -220,7 +220,7 @@ class Environment:
|
|
|
220
220
|
self.program_state_event.set()
|
|
221
221
|
self.program_state_event.clear()
|
|
222
222
|
|
|
223
|
-
def set_stop(self, stop_date: Timestamp, cause:
|
|
223
|
+
def set_stop(self, stop_date: Timestamp, cause: str | None, error: str | None) -> None:
|
|
224
224
|
with self._state_mutex:
|
|
225
225
|
if isinstance(self._program_state, ProgramRunning):
|
|
226
226
|
self._program_state = ProgramStopped(stop_date=stop_date, cause=cause, error=error)
|
|
@@ -229,16 +229,14 @@ class Environment:
|
|
|
229
229
|
self.program_state_event.set()
|
|
230
230
|
self.program_state_event.clear()
|
|
231
231
|
|
|
232
|
-
def open_frame(
|
|
233
|
-
self, event_history_context: Optional[EventHistoryContext] = None
|
|
234
|
-
) -> Environment:
|
|
232
|
+
def open_frame(self, event_history_context: EventHistoryContext | None = None) -> Environment:
|
|
235
233
|
with self._state_mutex:
|
|
236
234
|
frame = self.as_frame_of(env=self, event_history_frame_cache=event_history_context)
|
|
237
235
|
self._frames.append(frame)
|
|
238
236
|
return frame
|
|
239
237
|
|
|
240
238
|
def open_inner_frame(
|
|
241
|
-
self, event_history_context:
|
|
239
|
+
self, event_history_context: EventHistoryContext | None = None
|
|
242
240
|
) -> Environment:
|
|
243
241
|
with self._state_mutex:
|
|
244
242
|
variable_store = VariableStore.as_inner_scope_of(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Any, Final
|
|
1
|
+
from typing import Any, Final
|
|
2
2
|
|
|
3
3
|
from localstack.aws.api.stepfunctions import Arn, Definition, LongArn, StateMachineType
|
|
4
4
|
|
|
@@ -18,12 +18,10 @@ class ExecutionDetails:
|
|
|
18
18
|
arn: Final[LongArn]
|
|
19
19
|
name: Final[str]
|
|
20
20
|
role_arn: Final[Arn]
|
|
21
|
-
inpt: Final[
|
|
21
|
+
inpt: Final[Any | None]
|
|
22
22
|
start_time: Final[str]
|
|
23
23
|
|
|
24
|
-
def __init__(
|
|
25
|
-
self, arn: LongArn, name: str, role_arn: Arn, inpt: Optional[Any], start_time: str
|
|
26
|
-
):
|
|
24
|
+
def __init__(self, arn: LongArn, name: str, role_arn: Arn, inpt: Any | None, start_time: str):
|
|
27
25
|
self.arn = arn
|
|
28
26
|
self.name = name
|
|
29
27
|
self.role_arn = role_arn
|
|
@@ -4,7 +4,7 @@ import copy
|
|
|
4
4
|
import datetime
|
|
5
5
|
import logging
|
|
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
|
HistoryEvent,
|
|
@@ -61,9 +61,9 @@ class EventManager:
|
|
|
61
61
|
_mutex: Final[threading.Lock]
|
|
62
62
|
_event_id_gen: EventIdGenerator
|
|
63
63
|
_history_event_list: Final[HistoryEventList]
|
|
64
|
-
_cloud_watch_logging_session: Final[
|
|
64
|
+
_cloud_watch_logging_session: Final[CloudWatchLoggingSession | None]
|
|
65
65
|
|
|
66
|
-
def __init__(self, cloud_watch_logging_session:
|
|
66
|
+
def __init__(self, cloud_watch_logging_session: CloudWatchLoggingSession | None = None):
|
|
67
67
|
self._mutex = threading.Lock()
|
|
68
68
|
self._event_id_gen = EventIdGenerator()
|
|
69
69
|
self._history_event_list = list()
|
|
@@ -73,7 +73,7 @@ class EventManager:
|
|
|
73
73
|
self,
|
|
74
74
|
context: EventHistoryContext,
|
|
75
75
|
event_type: HistoryEventType,
|
|
76
|
-
event_details:
|
|
76
|
+
event_details: EventDetails | None = None,
|
|
77
77
|
timestamp: Timestamp = None,
|
|
78
78
|
update_source_event_id: bool = True,
|
|
79
79
|
) -> int:
|
|
@@ -105,7 +105,7 @@ class EventManager:
|
|
|
105
105
|
|
|
106
106
|
@staticmethod
|
|
107
107
|
def _get_current_timestamp() -> datetime.datetime:
|
|
108
|
-
return datetime.datetime.now(tz=datetime.
|
|
108
|
+
return datetime.datetime.now(tz=datetime.UTC)
|
|
109
109
|
|
|
110
110
|
@staticmethod
|
|
111
111
|
def _create_history_event(
|
|
@@ -113,7 +113,7 @@ class EventManager:
|
|
|
113
113
|
source_event_id: int,
|
|
114
114
|
event_type: HistoryEventType,
|
|
115
115
|
timestamp: datetime.datetime,
|
|
116
|
-
event_details:
|
|
116
|
+
event_details: EventDetails | None,
|
|
117
117
|
) -> HistoryEvent:
|
|
118
118
|
history_event = HistoryEvent()
|
|
119
119
|
if event_details is not None:
|
|
@@ -130,7 +130,7 @@ class EventManager:
|
|
|
130
130
|
source_event_id: int,
|
|
131
131
|
event_type: HistoryEventType,
|
|
132
132
|
timestamp: datetime.datetime,
|
|
133
|
-
event_details:
|
|
133
|
+
event_details: EventDetails | None,
|
|
134
134
|
):
|
|
135
135
|
history_event = self._create_history_event(
|
|
136
136
|
event_id=event_id,
|
|
@@ -154,7 +154,7 @@ class EventManager:
|
|
|
154
154
|
event_type: HistoryEventType,
|
|
155
155
|
timestamp: datetime.datetime,
|
|
156
156
|
execution_arn: LongArn,
|
|
157
|
-
event_details:
|
|
157
|
+
event_details: EventDetails | None,
|
|
158
158
|
include_execution_data: bool,
|
|
159
159
|
) -> HistoryLog:
|
|
160
160
|
log = HistoryLog(
|
|
@@ -184,7 +184,7 @@ class EventManager:
|
|
|
184
184
|
source_event_id: int,
|
|
185
185
|
event_type: HistoryEventType,
|
|
186
186
|
timestamp: datetime.datetime,
|
|
187
|
-
event_details:
|
|
187
|
+
event_details: EventDetails | None,
|
|
188
188
|
):
|
|
189
189
|
# No logging session for this execution.
|
|
190
190
|
if self._cloud_watch_logging_session is None:
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
4
|
from datetime import datetime
|
|
5
|
-
from typing import Final, NotRequired,
|
|
5
|
+
from typing import Final, NotRequired, TypedDict
|
|
6
6
|
|
|
7
7
|
from botocore.client import BaseClient
|
|
8
8
|
from botocore.exceptions import ClientError
|
|
@@ -111,7 +111,7 @@ class CloudWatchLoggingConfiguration:
|
|
|
111
111
|
@staticmethod
|
|
112
112
|
def extract_log_arn_parts_from(
|
|
113
113
|
logging_configuration: LoggingConfiguration,
|
|
114
|
-
) ->
|
|
114
|
+
) -> tuple[str, str, str] | None:
|
|
115
115
|
# Returns a tuple with: account_id, region, and log group name if the logging configuration
|
|
116
116
|
# specifies a valid cloud watch log group arn, none otherwise.
|
|
117
117
|
|
|
@@ -155,7 +155,7 @@ class CloudWatchLoggingConfiguration:
|
|
|
155
155
|
def from_logging_configuration(
|
|
156
156
|
state_machine_arn: LongArn,
|
|
157
157
|
logging_configuration: LoggingConfiguration,
|
|
158
|
-
) ->
|
|
158
|
+
) -> CloudWatchLoggingConfiguration | None:
|
|
159
159
|
log_level = logging_configuration.get("level", LogLevel.OFF)
|
|
160
160
|
if log_level == LogLevel.OFF:
|
|
161
161
|
return None
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import abc
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, Timestamp
|
|
5
5
|
|
|
@@ -12,16 +12,16 @@ class ProgramEnded(ProgramState):
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ProgramStopped(ProgramState):
|
|
15
|
-
def __init__(self, stop_date: Timestamp, error:
|
|
15
|
+
def __init__(self, stop_date: Timestamp, error: str | None, cause: str | None):
|
|
16
16
|
super().__init__()
|
|
17
17
|
self.stop_date: Timestamp = stop_date
|
|
18
|
-
self.error:
|
|
19
|
-
self.cause:
|
|
18
|
+
self.error: str | None = error
|
|
19
|
+
self.cause: str | None = cause
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class ProgramRunning(ProgramState):
|
|
23
|
-
_next_state_name:
|
|
24
|
-
_next_field_name:
|
|
23
|
+
_next_state_name: str | None
|
|
24
|
+
_next_field_name: str | None
|
|
25
25
|
|
|
26
26
|
def __init__(self):
|
|
27
27
|
super().__init__()
|
|
@@ -53,9 +53,9 @@ class ProgramRunning(ProgramState):
|
|
|
53
53
|
|
|
54
54
|
|
|
55
55
|
class ProgramError(ProgramState):
|
|
56
|
-
error: Final[
|
|
56
|
+
error: Final[ExecutionFailedEventDetails | None]
|
|
57
57
|
|
|
58
|
-
def __init__(self, error:
|
|
58
|
+
def __init__(self, error: ExecutionFailedEventDetails | None):
|
|
59
59
|
super().__init__()
|
|
60
60
|
self.error = error
|
|
61
61
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import copy
|
|
2
|
-
from typing import Any, Final, NotRequired,
|
|
2
|
+
from typing import Any, Final, NotRequired, TypedDict
|
|
3
3
|
|
|
4
4
|
from localstack.services.stepfunctions.asl.jsonata.jsonata import (
|
|
5
5
|
VariableDeclarations,
|
|
@@ -18,7 +18,7 @@ _STATES_ERROR_OUTPUT_PREFIX: Final[str] = "$states.errorOutput"
|
|
|
18
18
|
|
|
19
19
|
class ExecutionData(TypedDict):
|
|
20
20
|
Id: str
|
|
21
|
-
Input:
|
|
21
|
+
Input: Any | None
|
|
22
22
|
Name: str
|
|
23
23
|
RoleArn: str
|
|
24
24
|
StartTime: str # Format: ISO 8601.
|
|
@@ -43,7 +43,7 @@ class ItemData(TypedDict):
|
|
|
43
43
|
# Contains the index number for the array item that is being currently processed.
|
|
44
44
|
Index: int
|
|
45
45
|
# Contains the array item being processed.
|
|
46
|
-
Value:
|
|
46
|
+
Value: Any | None
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
class MapData(TypedDict):
|
|
@@ -73,8 +73,8 @@ class ContextObject:
|
|
|
73
73
|
class StatesData(TypedDict):
|
|
74
74
|
input: Any
|
|
75
75
|
context: ContextObjectData
|
|
76
|
-
result: NotRequired[
|
|
77
|
-
errorOutput: NotRequired[
|
|
76
|
+
result: NotRequired[Any | None]
|
|
77
|
+
errorOutput: NotRequired[Any | None]
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
class States:
|
|
@@ -87,7 +87,7 @@ class States:
|
|
|
87
87
|
self.context_object = ContextObject(context_object=context)
|
|
88
88
|
|
|
89
89
|
@staticmethod
|
|
90
|
-
def _extract(query:
|
|
90
|
+
def _extract(query: str | None, data: Any) -> Any:
|
|
91
91
|
if query is None:
|
|
92
92
|
result = data
|
|
93
93
|
else:
|
|
@@ -100,7 +100,7 @@ class States:
|
|
|
100
100
|
jsonpath_states_query = "$." + query[1:]
|
|
101
101
|
return self._extract(jsonpath_states_query, self._states_data)
|
|
102
102
|
|
|
103
|
-
def get_input(self, query:
|
|
103
|
+
def get_input(self, query: str | None = None) -> Any:
|
|
104
104
|
return self._extract(query, self._states_data["input"])
|
|
105
105
|
|
|
106
106
|
def reset(self, input_value: Any) -> None:
|
|
@@ -109,10 +109,10 @@ class States:
|
|
|
109
109
|
self._states_data["result"] = None
|
|
110
110
|
self._states_data["errorOutput"] = None
|
|
111
111
|
|
|
112
|
-
def get_context(self, query:
|
|
112
|
+
def get_context(self, query: str | None = None) -> Any:
|
|
113
113
|
return self._extract(query, self._states_data["context"])
|
|
114
114
|
|
|
115
|
-
def get_result(self, query:
|
|
115
|
+
def get_result(self, query: str | None = None) -> Any:
|
|
116
116
|
if "result" not in self._states_data:
|
|
117
117
|
raise RuntimeError("Illegal access to $states.result")
|
|
118
118
|
return self._extract(query, self._states_data["result"])
|
|
@@ -121,7 +121,7 @@ class States:
|
|
|
121
121
|
clone_result = copy.deepcopy(result)
|
|
122
122
|
self._states_data["result"] = clone_result
|
|
123
123
|
|
|
124
|
-
def get_error_output(self, query:
|
|
124
|
+
def get_error_output(self, query: str | None = None) -> Any:
|
|
125
125
|
if "errorOutput" not in self._states_data:
|
|
126
126
|
raise RuntimeError("Illegal access to $states.errorOutput")
|
|
127
127
|
return self._extract(query, self._states_data["errorOutput"])
|
|
@@ -131,7 +131,7 @@ class States:
|
|
|
131
131
|
self._states_data["errorOutput"] = clone_error_output
|
|
132
132
|
|
|
133
133
|
def to_variable_declarations(
|
|
134
|
-
self, variable_references:
|
|
134
|
+
self, variable_references: set[VariableReference] | None = None
|
|
135
135
|
) -> VariableDeclarations:
|
|
136
136
|
if not variable_references or _STATES_PREFIX in variable_references:
|
|
137
137
|
return encode_jsonata_variable_declarations(
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Optional
|
|
4
|
-
|
|
5
3
|
from localstack.aws.api.stepfunctions import Arn, InspectionData, StateMachineType
|
|
6
4
|
from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
7
5
|
from localstack.services.stepfunctions.asl.eval.evaluation_details import AWSExecutionDetails
|
|
@@ -32,7 +30,7 @@ class TestStateEnvironment(Environment):
|
|
|
32
30
|
context: ContextObjectData,
|
|
33
31
|
event_history_context: EventHistoryContext,
|
|
34
32
|
activity_store: dict[Arn, Activity],
|
|
35
|
-
cloud_watch_logging_session:
|
|
33
|
+
cloud_watch_logging_session: CloudWatchLoggingSession | None = None,
|
|
36
34
|
):
|
|
37
35
|
super().__init__(
|
|
38
36
|
aws_execution_details=aws_execution_details,
|
|
@@ -47,7 +45,7 @@ class TestStateEnvironment(Environment):
|
|
|
47
45
|
def as_frame_of(
|
|
48
46
|
cls,
|
|
49
47
|
env: TestStateEnvironment,
|
|
50
|
-
event_history_frame_cache:
|
|
48
|
+
event_history_frame_cache: EventHistoryContext | None = None,
|
|
51
49
|
) -> Environment:
|
|
52
50
|
frame = super().as_frame_of(env=env, event_history_frame_cache=event_history_frame_cache)
|
|
53
51
|
frame.inspection_data = env.inspection_data
|
|
@@ -57,7 +55,7 @@ class TestStateEnvironment(Environment):
|
|
|
57
55
|
cls,
|
|
58
56
|
env: TestStateEnvironment,
|
|
59
57
|
variable_store: VariableStore,
|
|
60
|
-
event_history_frame_cache:
|
|
58
|
+
event_history_frame_cache: EventHistoryContext | None = None,
|
|
61
59
|
) -> Environment:
|
|
62
60
|
frame = super().as_inner_frame_of(
|
|
63
61
|
env=env,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import Any, Final
|
|
3
|
+
from typing import Any, Final
|
|
4
4
|
|
|
5
5
|
from localstack.services.stepfunctions.asl.jsonata.jsonata import (
|
|
6
6
|
VariableDeclarations,
|
|
@@ -51,8 +51,8 @@ class VariableStore:
|
|
|
51
51
|
|
|
52
52
|
_declaration_tracing: Final[set[str]]
|
|
53
53
|
|
|
54
|
-
_outer_variable_declaration_cache:
|
|
55
|
-
_variable_declarations_cache:
|
|
54
|
+
_outer_variable_declaration_cache: VariableDeclarations | None
|
|
55
|
+
_variable_declarations_cache: VariableDeclarations | None
|
|
56
56
|
|
|
57
57
|
def __init__(self):
|
|
58
58
|
self._outer_scope = dict()
|