localstack-core 4.7.1.dev22__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 +31 -9
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +6 -6
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +62 -80
- 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 +57 -36
- localstack/services/cloudformation/v2/provider.py +155 -29
- 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 +13 -3
- 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.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/METADATA +1 -1
- {localstack_core-4.7.1.dev22.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.dev22.dist-info/plux.json +0 -1
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack +0 -0
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.7.1.dev22.data → localstack_core-4.7.1.dev24.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/WHEEL +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.7.1.dev22.dist-info → localstack_core-4.7.1.dev24.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import datetime
|
|
2
2
|
import threading
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.stepfunctions import ExecutionFailedEventDetails, HistoryEventType
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
@@ -26,7 +26,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
|
|
|
26
26
|
_termination_event: Final[threading.Event]
|
|
27
27
|
_active_workers_num: int
|
|
28
28
|
|
|
29
|
-
_terminated_with_error:
|
|
29
|
+
_terminated_with_error: ExecutionFailedEventDetails | None
|
|
30
30
|
|
|
31
31
|
def __init__(self, workers_num: int):
|
|
32
32
|
self._mutex = threading.Lock()
|
|
@@ -53,7 +53,7 @@ class BranchWorkerPool(BranchWorker.BranchWorkerComm):
|
|
|
53
53
|
def wait(self):
|
|
54
54
|
self._termination_event.wait()
|
|
55
55
|
|
|
56
|
-
def get_exit_event_details(self) ->
|
|
56
|
+
def get_exit_event_details(self) -> ExecutionFailedEventDetails | None:
|
|
57
57
|
return self._terminated_with_error
|
|
58
58
|
|
|
59
59
|
|
|
@@ -84,7 +84,7 @@ class BranchesDecl(EvalComponent):
|
|
|
84
84
|
branch_worker_pool.wait()
|
|
85
85
|
|
|
86
86
|
# Propagate exception if parallel task failed.
|
|
87
|
-
exit_event_details:
|
|
87
|
+
exit_event_details: ExecutionFailedEventDetails | None = (
|
|
88
88
|
branch_worker_pool.get_exit_event_details()
|
|
89
89
|
)
|
|
90
90
|
if exit_event_details is not None:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import copy
|
|
2
|
-
from typing import Optional
|
|
3
2
|
|
|
4
3
|
from localstack.aws.api.stepfunctions import HistoryEventType
|
|
5
4
|
from localstack.services.stepfunctions.asl.component.common.catch.catch_outcome import CatchOutcome
|
|
@@ -25,7 +24,7 @@ class StateParallel(ExecutionState):
|
|
|
25
24
|
# machine object must have fields named States and StartAt, whose meanings are exactly
|
|
26
25
|
# like those in the top level of a state machine.
|
|
27
26
|
branches: BranchesDecl
|
|
28
|
-
parargs:
|
|
27
|
+
parargs: Parargs | None
|
|
29
28
|
|
|
30
29
|
def __init__(self):
|
|
31
30
|
super().__init__(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
from json import JSONDecodeError
|
|
3
|
-
from typing import IO, Any, Final
|
|
3
|
+
from typing import IO, Any, Final
|
|
4
4
|
|
|
5
5
|
from localstack.aws.api.lambda_ import InvocationResponse
|
|
6
6
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
|
|
@@ -18,15 +18,15 @@ from localstack.utils.strings import to_bytes
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
class LambdaFunctionErrorException(Exception):
|
|
21
|
-
function_error: Final[
|
|
21
|
+
function_error: Final[str | None]
|
|
22
22
|
payload: Final[str]
|
|
23
23
|
|
|
24
|
-
def __init__(self, function_error:
|
|
24
|
+
def __init__(self, function_error: str | None, payload: str):
|
|
25
25
|
self.function_error = function_error
|
|
26
26
|
self.payload = payload
|
|
27
27
|
|
|
28
28
|
|
|
29
|
-
def _from_payload(payload_streaming_body: IO[bytes]) ->
|
|
29
|
+
def _from_payload(payload_streaming_body: IO[bytes]) -> Any | str:
|
|
30
30
|
"""
|
|
31
31
|
This method extracts the lambda payload. The payload may be a string or a JSON stringified object.
|
|
32
32
|
In the first case, this function converts the output into a UTF-8 string, otherwise it parses the
|
|
@@ -75,7 +75,7 @@ def execute_lambda_function_integration(
|
|
|
75
75
|
parameters=parameters, region=region, state_credentials=state_credentials
|
|
76
76
|
)
|
|
77
77
|
|
|
78
|
-
function_error:
|
|
78
|
+
function_error: str | None = invocation_response.get("FunctionError")
|
|
79
79
|
if function_error:
|
|
80
80
|
payload_json = invocation_response["Payload"]
|
|
81
81
|
payload_str = json.dumps(payload_json, separators=(",", ":"))
|
|
@@ -85,7 +85,7 @@ def execute_lambda_function_integration(
|
|
|
85
85
|
env.stack.append(response)
|
|
86
86
|
|
|
87
87
|
|
|
88
|
-
def to_payload_type(payload: Any) ->
|
|
88
|
+
def to_payload_type(payload: Any) -> bytes | None:
|
|
89
89
|
if isinstance(payload, bytes):
|
|
90
90
|
return payload
|
|
91
91
|
|
localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
from itertools import takewhile
|
|
5
|
-
from typing import Final
|
|
5
|
+
from typing import Final
|
|
6
6
|
|
|
7
7
|
from localstack.services.stepfunctions.asl.component.eval_component import EvalComponent
|
|
8
8
|
from localstack.services.stepfunctions.asl.eval.environment import Environment
|
|
@@ -33,7 +33,7 @@ class ResourceARN:
|
|
|
33
33
|
account: str,
|
|
34
34
|
task_type: str,
|
|
35
35
|
name: str,
|
|
36
|
-
option:
|
|
36
|
+
option: str | None,
|
|
37
37
|
):
|
|
38
38
|
self.arn = arn
|
|
39
39
|
self.partition = partition
|
|
@@ -137,7 +137,7 @@ class ServiceResource(Resource):
|
|
|
137
137
|
service_name: Final[str]
|
|
138
138
|
api_name: Final[str]
|
|
139
139
|
api_action: Final[str]
|
|
140
|
-
condition: Final[
|
|
140
|
+
condition: Final[str | None]
|
|
141
141
|
|
|
142
142
|
def __init__(self, resource_arn: ResourceARN):
|
|
143
143
|
super().__init__(resource_arn=resource_arn)
|
|
@@ -4,7 +4,7 @@ import abc
|
|
|
4
4
|
import copy
|
|
5
5
|
import json
|
|
6
6
|
import logging
|
|
7
|
-
from typing import Any, Final
|
|
7
|
+
from typing import Any, Final
|
|
8
8
|
|
|
9
9
|
from botocore.model import ListShape, OperationModel, Shape, StringShape, StructureShape
|
|
10
10
|
from botocore.response import StreamingBody
|
|
@@ -147,8 +147,8 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
147
147
|
parameters_bind_keys: list[str] = list(parameters.keys())
|
|
148
148
|
for parameter_key in parameters_bind_keys:
|
|
149
149
|
norm_parameter_key = camel_to_snake_case(parameter_key)
|
|
150
|
-
norm_member_bind:
|
|
151
|
-
|
|
150
|
+
norm_member_bind: tuple[str, StructureShape | None] | None = norm_member_binds.get(
|
|
151
|
+
norm_parameter_key
|
|
152
152
|
)
|
|
153
153
|
if norm_member_bind is not None:
|
|
154
154
|
norm_member_bind_key, norm_member_bind_shape = norm_member_bind
|
|
@@ -203,19 +203,19 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
203
203
|
|
|
204
204
|
response[norm_response_key] = response_value
|
|
205
205
|
|
|
206
|
-
def _get_boto_service_name(self, boto_service_name:
|
|
206
|
+
def _get_boto_service_name(self, boto_service_name: str | None = None) -> str:
|
|
207
207
|
api_name = boto_service_name or self.resource.api_name
|
|
208
208
|
return self._SERVICE_NAME_SFN_TO_BOTO_OVERRIDES.get(api_name, api_name)
|
|
209
209
|
|
|
210
|
-
def _get_boto_service_action(self, service_action_name:
|
|
210
|
+
def _get_boto_service_action(self, service_action_name: str | None = None) -> str:
|
|
211
211
|
api_action = service_action_name or self.resource.api_action
|
|
212
212
|
return camel_to_snake_case(api_action)
|
|
213
213
|
|
|
214
214
|
def _normalise_parameters(
|
|
215
215
|
self,
|
|
216
216
|
parameters: dict,
|
|
217
|
-
boto_service_name:
|
|
218
|
-
service_action_name:
|
|
217
|
+
boto_service_name: str | None = None,
|
|
218
|
+
service_action_name: str | None = None,
|
|
219
219
|
) -> None:
|
|
220
220
|
boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
|
|
221
221
|
service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
|
|
@@ -228,8 +228,8 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
228
228
|
def _normalise_response(
|
|
229
229
|
self,
|
|
230
230
|
response: Any,
|
|
231
|
-
boto_service_name:
|
|
232
|
-
service_action_name:
|
|
231
|
+
boto_service_name: str | None = None,
|
|
232
|
+
service_action_name: str | None = None,
|
|
233
233
|
) -> None:
|
|
234
234
|
boto_service_name = self._get_boto_service_name(boto_service_name=boto_service_name)
|
|
235
235
|
service_action_name = self._get_boto_service_action(service_action_name=service_action_name)
|
|
@@ -239,7 +239,7 @@ class StateTaskService(StateTask, abc.ABC):
|
|
|
239
239
|
if output_shape is not None:
|
|
240
240
|
self._from_boto_response(response, output_shape) # noqa
|
|
241
241
|
|
|
242
|
-
def _verify_size_quota(self, env: Environment, value:
|
|
242
|
+
def _verify_size_quota(self, env: Environment, value: str | json) -> None:
|
|
243
243
|
is_within: bool = is_within_size_quota(value)
|
|
244
244
|
if is_within:
|
|
245
245
|
return
|
|
@@ -4,7 +4,7 @@ import http
|
|
|
4
4
|
import json
|
|
5
5
|
import logging
|
|
6
6
|
from json import JSONDecodeError
|
|
7
|
-
from typing import Any, Final,
|
|
7
|
+
from typing import Any, Final, TypedDict
|
|
8
8
|
from urllib.parse import urlencode, urljoin, urlparse
|
|
9
9
|
|
|
10
10
|
import requests
|
|
@@ -76,13 +76,13 @@ class AuthType(str):
|
|
|
76
76
|
class TaskParameters(TypedDict):
|
|
77
77
|
ApiEndpoint: ApiEndpoint
|
|
78
78
|
Method: Method
|
|
79
|
-
Headers:
|
|
80
|
-
Stage:
|
|
81
|
-
Path:
|
|
82
|
-
QueryParameters:
|
|
83
|
-
RequestBody:
|
|
84
|
-
AllowNullValues:
|
|
85
|
-
AuthType:
|
|
79
|
+
Headers: Headers | None
|
|
80
|
+
Stage: Stage | None
|
|
81
|
+
Path: Path | None
|
|
82
|
+
QueryParameters: QueryParameters | None
|
|
83
|
+
RequestBody: RequestBody | None
|
|
84
|
+
AllowNullValues: AllowNullValues | None
|
|
85
|
+
AuthType: AuthType | None
|
|
86
86
|
|
|
87
87
|
|
|
88
88
|
class InvokeOutput(TypedDict):
|
|
@@ -131,14 +131,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
131
131
|
def __init__(self):
|
|
132
132
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
133
133
|
|
|
134
|
-
def _get_supported_parameters(self) ->
|
|
134
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
135
135
|
return self._SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
136
136
|
|
|
137
137
|
def _normalise_parameters(
|
|
138
138
|
self,
|
|
139
139
|
parameters: dict,
|
|
140
|
-
boto_service_name:
|
|
141
|
-
service_action_name:
|
|
140
|
+
boto_service_name: str | None = None,
|
|
141
|
+
service_action_name: str | None = None,
|
|
142
142
|
) -> None:
|
|
143
143
|
# ApiGateway does not support botocore request relay.
|
|
144
144
|
pass
|
|
@@ -146,14 +146,14 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
146
146
|
def _normalise_response(
|
|
147
147
|
self,
|
|
148
148
|
response: Any,
|
|
149
|
-
boto_service_name:
|
|
150
|
-
service_action_name:
|
|
149
|
+
boto_service_name: str | None = None,
|
|
150
|
+
service_action_name: str | None = None,
|
|
151
151
|
) -> None:
|
|
152
152
|
# ApiGateway does not support botocore request relay.
|
|
153
153
|
pass
|
|
154
154
|
|
|
155
155
|
@staticmethod
|
|
156
|
-
def _query_parameters_of(parameters: TaskParameters) ->
|
|
156
|
+
def _query_parameters_of(parameters: TaskParameters) -> str | None:
|
|
157
157
|
query_str = None
|
|
158
158
|
query_parameters = parameters.get("QueryParameters")
|
|
159
159
|
# TODO: add support for AllowNullValues.
|
|
@@ -167,7 +167,7 @@ class StateTaskServiceApiGateway(StateTaskServiceCallback):
|
|
|
167
167
|
return query_str
|
|
168
168
|
|
|
169
169
|
@staticmethod
|
|
170
|
-
def _headers_of(parameters: TaskParameters) ->
|
|
170
|
+
def _headers_of(parameters: TaskParameters) -> dict | None:
|
|
171
171
|
headers = parameters.get("Headers", dict())
|
|
172
172
|
if headers:
|
|
173
173
|
for key in headers.keys():
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
from botocore.exceptions import ClientError
|
|
4
5
|
from moto.batch.utils import JobStatus
|
|
@@ -62,7 +63,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
62
63
|
def __init__(self):
|
|
63
64
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
64
65
|
|
|
65
|
-
def _get_supported_parameters(self) ->
|
|
66
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
66
67
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
67
68
|
|
|
68
69
|
@staticmethod
|
|
@@ -139,7 +140,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
139
140
|
resource_runtime_part: ResourceRuntimePart,
|
|
140
141
|
normalised_parameters: dict,
|
|
141
142
|
state_credentials: StateCredentials,
|
|
142
|
-
) -> Callable[[],
|
|
143
|
+
) -> Callable[[], Any | None]:
|
|
143
144
|
batch_client = boto_client_for(
|
|
144
145
|
service="batch",
|
|
145
146
|
region=resource_runtime_part.region,
|
|
@@ -148,7 +149,7 @@ class StateTaskServiceBatch(StateTaskServiceCallback):
|
|
|
148
149
|
submission_output: dict = env.stack.pop()
|
|
149
150
|
job_id = submission_output["JobId"]
|
|
150
151
|
|
|
151
|
-
def _sync_resolver() ->
|
|
152
|
+
def _sync_resolver() -> dict | None:
|
|
152
153
|
describe_jobs_response = batch_client.describe_jobs(jobs=[job_id])
|
|
153
154
|
describe_jobs = describe_jobs_response["jobs"]
|
|
154
155
|
if describe_jobs:
|
|
@@ -2,7 +2,8 @@ import abc
|
|
|
2
2
|
import json
|
|
3
3
|
import threading
|
|
4
4
|
import time
|
|
5
|
-
from
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from typing import Any, Final
|
|
6
7
|
|
|
7
8
|
from localstack.aws.api.stepfunctions import (
|
|
8
9
|
HistoryEventExecutionDataDetails,
|
|
@@ -67,7 +68,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
67
68
|
resource_runtime_part: ResourceRuntimePart,
|
|
68
69
|
normalised_parameters: dict,
|
|
69
70
|
state_credentials: StateCredentials,
|
|
70
|
-
) -> Callable[[],
|
|
71
|
+
) -> Callable[[], Any | None]:
|
|
71
72
|
raise RuntimeError(
|
|
72
73
|
f"Unsupported .sync callback procedure in resource {self.resource.resource_arn}"
|
|
73
74
|
)
|
|
@@ -78,7 +79,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
78
79
|
resource_runtime_part: ResourceRuntimePart,
|
|
79
80
|
normalised_parameters: dict,
|
|
80
81
|
state_credentials: StateCredentials,
|
|
81
|
-
) -> Callable[[],
|
|
82
|
+
) -> Callable[[], Any | None]:
|
|
82
83
|
raise RuntimeError(
|
|
83
84
|
f"Unsupported .sync2 callback procedure in resource {self.resource.resource_arn}"
|
|
84
85
|
)
|
|
@@ -88,9 +89,9 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
88
89
|
env: Environment,
|
|
89
90
|
timeout_seconds: int,
|
|
90
91
|
callback_endpoint: CallbackEndpoint,
|
|
91
|
-
heartbeat_endpoint:
|
|
92
|
+
heartbeat_endpoint: HeartbeatEndpoint | None,
|
|
92
93
|
) -> CallbackOutcome:
|
|
93
|
-
outcome:
|
|
94
|
+
outcome: CallbackOutcome | None
|
|
94
95
|
if heartbeat_endpoint is not None:
|
|
95
96
|
outcome = self._wait_for_task_token_heartbeat(
|
|
96
97
|
env, callback_endpoint, heartbeat_endpoint
|
|
@@ -104,12 +105,12 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
104
105
|
def _eval_sync(
|
|
105
106
|
self,
|
|
106
107
|
env: Environment,
|
|
107
|
-
sync_resolver: Callable[[],
|
|
108
|
-
timeout_seconds:
|
|
109
|
-
callback_endpoint:
|
|
110
|
-
heartbeat_endpoint:
|
|
108
|
+
sync_resolver: Callable[[], Any | None],
|
|
109
|
+
timeout_seconds: int | None,
|
|
110
|
+
callback_endpoint: CallbackEndpoint | None,
|
|
111
|
+
heartbeat_endpoint: HeartbeatEndpoint | None,
|
|
111
112
|
) -> CallbackOutcome | Any:
|
|
112
|
-
callback_output:
|
|
113
|
+
callback_output: CallbackOutcome | None = None
|
|
113
114
|
|
|
114
115
|
# Listen for WaitForTaskToken signals if an endpoint is provided.
|
|
115
116
|
if callback_endpoint is not None:
|
|
@@ -134,7 +135,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
134
135
|
# an exception in this thread will invalidate env, and therefore the worker thread.
|
|
135
136
|
# hence why here there are no explicit stopping logic for thread_wait_for_task_token.
|
|
136
137
|
|
|
137
|
-
sync_result:
|
|
138
|
+
sync_result: Any | None = None
|
|
138
139
|
while env.is_running():
|
|
139
140
|
sync_result = sync_resolver()
|
|
140
141
|
if callback_output or sync_result:
|
|
@@ -154,7 +155,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
154
155
|
task_output = env.stack.pop()
|
|
155
156
|
|
|
156
157
|
# Initialise the waitForTaskToken Callback endpoint for this task if supported.
|
|
157
|
-
callback_endpoint:
|
|
158
|
+
callback_endpoint: CallbackEndpoint | None = None
|
|
158
159
|
if ResourceCondition.WaitForTaskToken in self._supported_integration_patterns:
|
|
159
160
|
callback_id = env.states.context_object.context_object_data["Task"]["Token"]
|
|
160
161
|
callback_endpoint = env.callback_pool_manager.get(callback_id)
|
|
@@ -164,7 +165,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
164
165
|
timeout_seconds = env.stack.pop()
|
|
165
166
|
|
|
166
167
|
# Setup resources for heartbeat workloads if necessary.
|
|
167
|
-
heartbeat_endpoint:
|
|
168
|
+
heartbeat_endpoint: HeartbeatEndpoint | None = None
|
|
168
169
|
if self.heartbeat:
|
|
169
170
|
self.heartbeat.eval(env=env)
|
|
170
171
|
heartbeat_seconds = env.stack.pop()
|
|
@@ -240,7 +241,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
240
241
|
self,
|
|
241
242
|
timeout_seconds: int,
|
|
242
243
|
callback_endpoint: CallbackEndpoint,
|
|
243
|
-
) ->
|
|
244
|
+
) -> CallbackOutcome | None:
|
|
244
245
|
# Awaits a callback notification and returns the outcome received.
|
|
245
246
|
# If the operation times out or is interrupted it returns None.
|
|
246
247
|
|
|
@@ -249,7 +250,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
249
250
|
# discarded by the main process.
|
|
250
251
|
# Note: although this is the same timeout value, this can only decay strictly after the first timeout
|
|
251
252
|
# started as it is invoked strictly later.
|
|
252
|
-
outcome:
|
|
253
|
+
outcome: CallbackOutcome | None = callback_endpoint.wait(timeout=timeout_seconds)
|
|
253
254
|
return outcome
|
|
254
255
|
|
|
255
256
|
def _wait_for_task_token_heartbeat( # noqa
|
|
@@ -257,7 +258,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
257
258
|
env: Environment,
|
|
258
259
|
callback_endpoint: CallbackEndpoint,
|
|
259
260
|
heartbeat_endpoint: HeartbeatEndpoint,
|
|
260
|
-
) ->
|
|
261
|
+
) -> CallbackOutcome | None:
|
|
261
262
|
outcome = None
|
|
262
263
|
while (
|
|
263
264
|
env.is_running()
|
|
@@ -285,7 +286,7 @@ class StateTaskServiceCallback(StateTaskService, abc.ABC):
|
|
|
285
286
|
self, env: Environment, ex: CallbackOutcomeFailureError
|
|
286
287
|
) -> FailureEvent:
|
|
287
288
|
callback_outcome_failure: CallbackOutcomeFailure = ex.callback_outcome_failure
|
|
288
|
-
error:
|
|
289
|
+
error: str | None = callback_outcome_failure.error
|
|
289
290
|
return FailureEvent(
|
|
290
291
|
env=env,
|
|
291
292
|
error_name=CustomErrorName(error_name=error),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -76,7 +76,7 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {
|
|
|
76
76
|
|
|
77
77
|
|
|
78
78
|
class StateTaskServiceDynamoDB(StateTaskService):
|
|
79
|
-
def _get_supported_parameters(self) ->
|
|
79
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
80
80
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
81
81
|
|
|
82
82
|
@staticmethod
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
from localstack.services.stepfunctions.asl.component.state.state_execution.state_task.credentials import (
|
|
4
5
|
StateCredentials,
|
|
@@ -42,7 +43,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
42
43
|
def __init__(self):
|
|
43
44
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
44
45
|
|
|
45
|
-
def _get_supported_parameters(self) ->
|
|
46
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
46
47
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
47
48
|
|
|
48
49
|
def _before_eval_execution(
|
|
@@ -102,7 +103,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
102
103
|
resource_runtime_part: ResourceRuntimePart,
|
|
103
104
|
normalised_parameters: dict,
|
|
104
105
|
state_credentials: StateCredentials,
|
|
105
|
-
) -> Callable[[],
|
|
106
|
+
) -> Callable[[], Any | None]:
|
|
106
107
|
ecs_client = boto_client_for(
|
|
107
108
|
service="ecs",
|
|
108
109
|
region=resource_runtime_part.region,
|
|
@@ -112,7 +113,7 @@ class StateTaskServiceEcs(StateTaskServiceCallback):
|
|
|
112
113
|
task_arn: str = submission_output["Tasks"][0]["TaskArn"]
|
|
113
114
|
cluster_arn: str = submission_output["Tasks"][0]["ClusterArn"]
|
|
114
115
|
|
|
115
|
-
def _sync_resolver() ->
|
|
116
|
+
def _sync_resolver() -> dict | None:
|
|
116
117
|
describe_tasks_output = ecs_client.describe_tasks(cluster=cluster_arn, tasks=[task_arn])
|
|
117
118
|
last_status: str = describe_tasks_output["tasks"][0]["lastStatus"]
|
|
118
119
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from typing import Final
|
|
2
|
+
from typing import Final
|
|
3
3
|
|
|
4
4
|
from localstack.aws.api.stepfunctions import HistoryEventType, TaskFailedEventDetails
|
|
5
5
|
from localstack.services.stepfunctions.asl.component.common.error_name.custom_error_name import (
|
|
@@ -33,9 +33,9 @@ _SUPPORTED_API_PARAM_BINDINGS: Final[dict[str, set[str]]] = {"putevents": {"Entr
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
class SfnFailedEntryCountException(RuntimeError):
|
|
36
|
-
cause: Final[
|
|
36
|
+
cause: Final[dict | None]
|
|
37
37
|
|
|
38
|
-
def __init__(self, cause:
|
|
38
|
+
def __init__(self, cause: dict | None):
|
|
39
39
|
super().__init__(json.dumps(cause))
|
|
40
40
|
self.cause = cause
|
|
41
41
|
|
|
@@ -44,7 +44,7 @@ class StateTaskServiceEvents(StateTaskServiceCallback):
|
|
|
44
44
|
def __init__(self):
|
|
45
45
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
46
46
|
|
|
47
|
-
def _get_supported_parameters(self) ->
|
|
47
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
48
48
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
49
49
|
|
|
50
50
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, Final
|
|
2
3
|
|
|
3
4
|
import boto3
|
|
4
5
|
from botocore.exceptions import ClientError
|
|
@@ -73,7 +74,7 @@ _API_ACTION_HANDLER_TYPE = Callable[
|
|
|
73
74
|
]
|
|
74
75
|
# The type of (sync)handler builder function for StateTaskServiceGlue objects.
|
|
75
76
|
_API_ACTION_HANDLER_BUILDER_TYPE = Callable[
|
|
76
|
-
[Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[],
|
|
77
|
+
[Environment, ResourceRuntimePart, dict, StateCredentials], Callable[[], Any | None]
|
|
77
78
|
]
|
|
78
79
|
|
|
79
80
|
|
|
@@ -81,7 +82,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
81
82
|
def __init__(self):
|
|
82
83
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
83
84
|
|
|
84
|
-
def _get_supported_parameters(self) ->
|
|
85
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
85
86
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
86
87
|
|
|
87
88
|
def _get_api_action_handler(self) -> _API_ACTION_HANDLER_TYPE:
|
|
@@ -174,7 +175,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
174
175
|
resource_runtime_part: ResourceRuntimePart,
|
|
175
176
|
normalised_parameters: dict,
|
|
176
177
|
state_credentials: StateCredentials,
|
|
177
|
-
) -> Callable[[],
|
|
178
|
+
) -> Callable[[], Any | None]:
|
|
178
179
|
# Poll the job run state from glue, using GetJobRun until the job has terminated. Hence, append the output
|
|
179
180
|
# of GetJobRun to the state.
|
|
180
181
|
|
|
@@ -188,7 +189,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
188
189
|
resource_runtime_part=resource_runtime_part, state_credentials=state_credentials
|
|
189
190
|
)
|
|
190
191
|
|
|
191
|
-
def _sync_resolver() ->
|
|
192
|
+
def _sync_resolver() -> Any | None:
|
|
192
193
|
# Sample GetJobRun until completion.
|
|
193
194
|
get_job_run_response: dict = glue_client.get_job_run(JobName=job_name, RunId=job_run_id)
|
|
194
195
|
job_run: dict = get_job_run_response["JobRun"]
|
|
@@ -232,7 +233,7 @@ class StateTaskServiceGlue(StateTaskServiceCallback):
|
|
|
232
233
|
resource_runtime_part: ResourceRuntimePart,
|
|
233
234
|
normalised_parameters: dict,
|
|
234
235
|
state_credentials: StateCredentials,
|
|
235
|
-
) -> Callable[[],
|
|
236
|
+
) -> Callable[[], Any | None]:
|
|
236
237
|
sync_resolver_builder = self._get_api_action_sync_builder_handler()
|
|
237
238
|
sync_resolver = sync_resolver_builder(
|
|
238
239
|
env, resource_runtime_part, normalised_parameters, state_credentials
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import logging
|
|
3
|
-
from typing import Final
|
|
3
|
+
from typing import Final
|
|
4
4
|
|
|
5
5
|
from botocore.exceptions import ClientError
|
|
6
6
|
|
|
@@ -50,7 +50,7 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
|
|
|
50
50
|
def __init__(self):
|
|
51
51
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
52
52
|
|
|
53
|
-
def _get_supported_parameters(self) ->
|
|
53
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
54
54
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
55
55
|
|
|
56
56
|
@staticmethod
|
|
@@ -105,8 +105,8 @@ class StateTaskServiceLambda(StateTaskServiceCallback):
|
|
|
105
105
|
def _normalise_parameters(
|
|
106
106
|
self,
|
|
107
107
|
parameters: dict,
|
|
108
|
-
boto_service_name:
|
|
109
|
-
service_action_name:
|
|
108
|
+
boto_service_name: str | None = None,
|
|
109
|
+
service_action_name: str | None = None,
|
|
110
110
|
) -> None:
|
|
111
111
|
# Run Payload value casting before normalisation.
|
|
112
112
|
if "Payload" in parameters:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import json
|
|
2
|
-
from
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from typing import Any, Final
|
|
3
4
|
|
|
4
5
|
from botocore.exceptions import ClientError
|
|
5
6
|
|
|
@@ -52,7 +53,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
52
53
|
def __init__(self):
|
|
53
54
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
54
55
|
|
|
55
|
-
def _get_supported_parameters(self) ->
|
|
56
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
56
57
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
57
58
|
|
|
58
59
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|
|
@@ -91,8 +92,8 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
91
92
|
def _normalise_parameters(
|
|
92
93
|
self,
|
|
93
94
|
parameters: dict,
|
|
94
|
-
boto_service_name:
|
|
95
|
-
service_action_name:
|
|
95
|
+
boto_service_name: str | None = None,
|
|
96
|
+
service_action_name: str | None = None,
|
|
96
97
|
) -> None:
|
|
97
98
|
if service_action_name is None:
|
|
98
99
|
if self._get_boto_service_action() == "start_execution":
|
|
@@ -115,7 +116,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
115
116
|
resource_runtime_part: ResourceRuntimePart,
|
|
116
117
|
normalised_parameters: dict,
|
|
117
118
|
state_credentials: StateCredentials,
|
|
118
|
-
) -> Callable[[],
|
|
119
|
+
) -> Callable[[], Any | None]:
|
|
119
120
|
sfn_client = boto_client_for(
|
|
120
121
|
service="stepfunctions",
|
|
121
122
|
region=resource_runtime_part.region,
|
|
@@ -124,7 +125,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
124
125
|
submission_output: dict = env.stack.pop()
|
|
125
126
|
execution_arn: str = submission_output["ExecutionArn"]
|
|
126
127
|
|
|
127
|
-
def _sync_resolver() ->
|
|
128
|
+
def _sync_resolver() -> Any | None:
|
|
128
129
|
describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
|
|
129
130
|
describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
|
|
130
131
|
DescribeExecutionOutput, describe_execution_output
|
|
@@ -176,7 +177,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
176
177
|
resource_runtime_part: ResourceRuntimePart,
|
|
177
178
|
normalised_parameters: dict,
|
|
178
179
|
state_credentials: StateCredentials,
|
|
179
|
-
) -> Callable[[],
|
|
180
|
+
) -> Callable[[], Any | None]:
|
|
180
181
|
sfn_client = boto_client_for(
|
|
181
182
|
region=resource_runtime_part.region,
|
|
182
183
|
service="stepfunctions",
|
|
@@ -185,7 +186,7 @@ class StateTaskServiceSfn(StateTaskServiceCallback):
|
|
|
185
186
|
submission_output: dict = env.stack.pop()
|
|
186
187
|
execution_arn: str = submission_output["ExecutionArn"]
|
|
187
188
|
|
|
188
|
-
def _sync2_resolver() ->
|
|
189
|
+
def _sync2_resolver() -> Any | None:
|
|
189
190
|
describe_execution_output = sfn_client.describe_execution(executionArn=execution_arn)
|
|
190
191
|
describe_execution_output: DescribeExecutionOutput = select_from_typed_dict(
|
|
191
192
|
DescribeExecutionOutput, describe_execution_output
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Final
|
|
1
|
+
from typing import Final
|
|
2
2
|
|
|
3
3
|
from botocore.exceptions import ClientError
|
|
4
4
|
|
|
@@ -46,7 +46,7 @@ class StateTaskServiceSns(StateTaskServiceCallback):
|
|
|
46
46
|
def __init__(self):
|
|
47
47
|
super().__init__(supported_integration_patterns=_SUPPORTED_INTEGRATION_PATTERNS)
|
|
48
48
|
|
|
49
|
-
def _get_supported_parameters(self) ->
|
|
49
|
+
def _get_supported_parameters(self) -> set[str] | None:
|
|
50
50
|
return _SUPPORTED_API_PARAM_BINDINGS.get(self.resource.api_action.lower())
|
|
51
51
|
|
|
52
52
|
def _from_error(self, env: Environment, ex: Exception) -> FailureEvent:
|