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,5 +1,3 @@
|
|
|
1
|
-
from typing import Optional, Type
|
|
2
|
-
|
|
3
1
|
from localstack.services.cloudformation.resource_provider import (
|
|
4
2
|
CloudFormationResourceProviderPlugin,
|
|
5
3
|
ResourceProvider,
|
|
@@ -10,7 +8,7 @@ class CertificateManagerCertificateProviderPlugin(CloudFormationResourceProvider
|
|
|
10
8
|
name = "AWS::CertificateManager::Certificate"
|
|
11
9
|
|
|
12
10
|
def __init__(self):
|
|
13
|
-
self.factory:
|
|
11
|
+
self.factory: type[ResourceProvider] | None = None
|
|
14
12
|
|
|
15
13
|
def load(self):
|
|
16
14
|
from localstack.services.certificatemanager.resource_providers.aws_certificatemanager_certificate import (
|
|
@@ -2,8 +2,8 @@ import builtins
|
|
|
2
2
|
import json
|
|
3
3
|
import logging
|
|
4
4
|
import re
|
|
5
|
+
from collections.abc import Callable
|
|
5
6
|
from copy import deepcopy
|
|
6
|
-
from typing import Callable, List
|
|
7
7
|
|
|
8
8
|
from localstack import config
|
|
9
9
|
from localstack.utils import common
|
|
@@ -88,7 +88,7 @@ def params_list_to_dict(param_name, key_attr_name="Key", value_attr_name="Value"
|
|
|
88
88
|
return do_replace
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
def lambda_keys_to_lower(key=None, skip_children_of:
|
|
91
|
+
def lambda_keys_to_lower(key=None, skip_children_of: list[str] = None):
|
|
92
92
|
return (
|
|
93
93
|
lambda account_id,
|
|
94
94
|
region_name,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Literal,
|
|
1
|
+
from typing import Literal, TypedDict
|
|
2
2
|
|
|
3
3
|
Action = str
|
|
4
4
|
|
|
@@ -6,11 +6,11 @@ Action = str
|
|
|
6
6
|
class ResourceChange(TypedDict):
|
|
7
7
|
Action: Action
|
|
8
8
|
LogicalResourceId: str
|
|
9
|
-
PhysicalResourceId:
|
|
9
|
+
PhysicalResourceId: str | None
|
|
10
10
|
ResourceType: str
|
|
11
11
|
Scope: list
|
|
12
12
|
Details: list
|
|
13
|
-
Replacement:
|
|
13
|
+
Replacement: Literal["False"] | None
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class ChangeConfig(TypedDict):
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import logging
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import TypedDict
|
|
3
3
|
|
|
4
4
|
from localstack.aws.api.cloudformation import Capability, ChangeSetType, Parameter
|
|
5
5
|
from localstack.services.cloudformation.engine.parameters import (
|
|
@@ -52,14 +52,14 @@ class StackInstance:
|
|
|
52
52
|
class CreateChangeSetInput(TypedDict):
|
|
53
53
|
StackName: str
|
|
54
54
|
Capabilities: list[Capability]
|
|
55
|
-
ChangeSetName:
|
|
56
|
-
ChangSetType:
|
|
55
|
+
ChangeSetName: str | None
|
|
56
|
+
ChangSetType: ChangeSetType | None
|
|
57
57
|
Parameters: list[Parameter]
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
class StackTemplate(TypedDict):
|
|
61
61
|
StackName: str
|
|
62
|
-
ChangeSetName:
|
|
62
|
+
ChangeSetName: str | None
|
|
63
63
|
Outputs: dict
|
|
64
64
|
Resources: dict
|
|
65
65
|
|
|
@@ -83,9 +83,9 @@ class Stack:
|
|
|
83
83
|
self,
|
|
84
84
|
account_id: str,
|
|
85
85
|
region_name: str,
|
|
86
|
-
metadata:
|
|
87
|
-
template:
|
|
88
|
-
template_body:
|
|
86
|
+
metadata: CreateChangeSetInput | None = None,
|
|
87
|
+
template: StackTemplate | None = None,
|
|
88
|
+
template_body: str | None = None,
|
|
89
89
|
):
|
|
90
90
|
self.account_id = account_id
|
|
91
91
|
self.region_name = region_name
|
|
@@ -185,7 +185,7 @@ class Stack:
|
|
|
185
185
|
result.setdefault(attr, [])
|
|
186
186
|
return result
|
|
187
187
|
|
|
188
|
-
def set_stack_status(self, status: str, status_reason:
|
|
188
|
+
def set_stack_status(self, status: str, status_reason: str | None = None):
|
|
189
189
|
self.metadata["StackStatus"] = status
|
|
190
190
|
if "FAILED" in status:
|
|
191
191
|
self.metadata["StackStatusReason"] = status_reason or "Deployment failed"
|
|
@@ -428,10 +428,10 @@ class StackChangeSet(Stack):
|
|
|
428
428
|
# V2 only
|
|
429
429
|
def populate_update_graph(
|
|
430
430
|
self,
|
|
431
|
-
before_template:
|
|
432
|
-
after_template:
|
|
433
|
-
before_parameters:
|
|
434
|
-
after_parameters:
|
|
431
|
+
before_template: dict | None,
|
|
432
|
+
after_template: dict | None,
|
|
433
|
+
before_parameters: dict | None,
|
|
434
|
+
after_parameters: dict | None,
|
|
435
435
|
) -> None:
|
|
436
436
|
change_set_model = ChangeSetModel(
|
|
437
437
|
before_template=before_template,
|
|
@@ -19,7 +19,7 @@ Documentation extracted from AWS docs (https://docs.aws.amazon.com/AWSCloudForma
|
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
import logging
|
|
22
|
-
from typing import Literal,
|
|
22
|
+
from typing import Literal, TypedDict
|
|
23
23
|
|
|
24
24
|
from botocore.exceptions import ClientError
|
|
25
25
|
|
|
@@ -179,8 +179,8 @@ def convert_stack_parameters_to_dict(in_params: list[Parameter] | None) -> dict[
|
|
|
179
179
|
class LegacyParameterProperties(TypedDict):
|
|
180
180
|
Value: str
|
|
181
181
|
ParameterType: str
|
|
182
|
-
ParameterValue:
|
|
183
|
-
ResolvedValue:
|
|
182
|
+
ParameterValue: str | None
|
|
183
|
+
ResolvedValue: str | None
|
|
184
184
|
|
|
185
185
|
|
|
186
186
|
class LegacyParameter(TypedDict):
|
|
@@ -4,7 +4,6 @@ import logging
|
|
|
4
4
|
import re
|
|
5
5
|
import traceback
|
|
6
6
|
import uuid
|
|
7
|
-
from typing import Optional
|
|
8
7
|
|
|
9
8
|
from botocore.exceptions import ClientError
|
|
10
9
|
|
|
@@ -86,7 +85,7 @@ def get_attr_from_model_instance(
|
|
|
86
85
|
attribute_name: str,
|
|
87
86
|
resource_type: str,
|
|
88
87
|
resource_id: str,
|
|
89
|
-
attribute_sub_name:
|
|
88
|
+
attribute_sub_name: str | None = None,
|
|
90
89
|
) -> str:
|
|
91
90
|
if resource["PhysicalResourceId"] == MOCK_REFERENCE:
|
|
92
91
|
LOG.warning(
|
|
@@ -1029,7 +1028,7 @@ class TemplateDeployer:
|
|
|
1029
1028
|
stack.set_resource_status(resource_id, f"{action}_IN_PROGRESS")
|
|
1030
1029
|
|
|
1031
1030
|
def get_change_config(
|
|
1032
|
-
self, action: str, resource: dict, change_set_id:
|
|
1031
|
+
self, action: str, resource: dict, change_set_id: str | None = None
|
|
1033
1032
|
) -> ChangeConfig:
|
|
1034
1033
|
result = ChangeConfig(
|
|
1035
1034
|
**{
|
|
@@ -1105,10 +1104,10 @@ class TemplateDeployer:
|
|
|
1105
1104
|
existing_stack,
|
|
1106
1105
|
new_stack,
|
|
1107
1106
|
# TODO: remove initialize argument from here, and determine action based on resource status
|
|
1108
|
-
initialize:
|
|
1107
|
+
initialize: bool | None = False,
|
|
1109
1108
|
change_set_id=None,
|
|
1110
|
-
append_to_changeset:
|
|
1111
|
-
filter_unchanged_resources:
|
|
1109
|
+
append_to_changeset: bool | None = False,
|
|
1110
|
+
filter_unchanged_resources: bool | None = False,
|
|
1112
1111
|
) -> list[ChangeConfig]:
|
|
1113
1112
|
old_resources = existing_stack.template["Resources"]
|
|
1114
1113
|
new_resources = new_stack.template["Resources"]
|
|
@@ -1140,9 +1139,9 @@ class TemplateDeployer:
|
|
|
1140
1139
|
self,
|
|
1141
1140
|
existing_stack: Stack,
|
|
1142
1141
|
new_stack: StackChangeSet,
|
|
1143
|
-
change_set_id:
|
|
1144
|
-
initialize:
|
|
1145
|
-
action:
|
|
1142
|
+
change_set_id: str | None = None,
|
|
1143
|
+
initialize: bool | None = False,
|
|
1144
|
+
action: str | None = None,
|
|
1146
1145
|
):
|
|
1147
1146
|
old_resources = existing_stack.template["Resources"]
|
|
1148
1147
|
new_resources = new_stack.template["Resources"]
|
|
@@ -1201,7 +1200,7 @@ class TemplateDeployer:
|
|
|
1201
1200
|
self,
|
|
1202
1201
|
changes: list[ChangeConfig],
|
|
1203
1202
|
stack: Stack,
|
|
1204
|
-
action:
|
|
1203
|
+
action: str | None = None,
|
|
1205
1204
|
new_stack=None,
|
|
1206
1205
|
):
|
|
1207
1206
|
def _run(*args):
|
|
@@ -3,9 +3,10 @@ import json
|
|
|
3
3
|
import logging
|
|
4
4
|
import os
|
|
5
5
|
import re
|
|
6
|
+
from collections.abc import Callable
|
|
6
7
|
from copy import deepcopy
|
|
7
8
|
from dataclasses import dataclass
|
|
8
|
-
from typing import Any
|
|
9
|
+
from typing import Any
|
|
9
10
|
|
|
10
11
|
import boto3
|
|
11
12
|
from botocore.exceptions import ClientError
|
|
@@ -27,7 +28,7 @@ SERVERLESS_TRANSFORM = "AWS::Serverless-2016-10-31"
|
|
|
27
28
|
EXTENSIONS_TRANSFORM = "AWS::LanguageExtensions"
|
|
28
29
|
SECRETSMANAGER_TRANSFORM = "AWS::SecretsManager-2020-07-23"
|
|
29
30
|
|
|
30
|
-
TransformResult =
|
|
31
|
+
TransformResult = dict | str
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
@dataclass
|
|
@@ -83,7 +84,7 @@ class AwsIncludeTransformer(Transformer):
|
|
|
83
84
|
|
|
84
85
|
|
|
85
86
|
# maps transformer names to implementing classes
|
|
86
|
-
transformers:
|
|
87
|
+
transformers: dict[str, type] = {"AWS::Include": AwsIncludeTransformer}
|
|
87
88
|
|
|
88
89
|
|
|
89
90
|
def apply_intrinsic_transformations(
|
|
@@ -449,7 +450,7 @@ def expand_fn_foreach(
|
|
|
449
450
|
|
|
450
451
|
def apply_serverless_transformation(
|
|
451
452
|
account_id: str, region_name: str, parsed_template: dict, template_parameters: dict
|
|
452
|
-
) ->
|
|
453
|
+
) -> str | None:
|
|
453
454
|
"""only returns string when parsing SAM template, otherwise None"""
|
|
454
455
|
# TODO: we might also want to override the access key ID to account ID
|
|
455
456
|
region_before = os.environ.get("AWS_DEFAULT_REGION")
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
from
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
from typing import Any, TypedDict
|
|
2
3
|
|
|
3
4
|
# ---------------------
|
|
4
5
|
# TYPES
|
|
@@ -25,16 +26,16 @@ class FuncDetailsValue(TypedDict):
|
|
|
25
26
|
# - stack_name
|
|
26
27
|
# - resources
|
|
27
28
|
# - resource_id
|
|
28
|
-
parameters:
|
|
29
|
+
parameters: ResourceDefinition | Callable[[dict, str, list[dict], str], dict] | None
|
|
29
30
|
"""arguments to the function, or a function that generates the arguments to the function"""
|
|
30
31
|
# Callable here takes the arguments
|
|
31
32
|
# - result
|
|
32
33
|
# - resource_id
|
|
33
34
|
# - resources
|
|
34
35
|
# - resource_type
|
|
35
|
-
result_handler:
|
|
36
|
+
result_handler: Callable[[dict, str, list[dict], str], None] | None
|
|
36
37
|
"""Take the result of the operation and patch the state of the resources, yuck..."""
|
|
37
|
-
types:
|
|
38
|
+
types: dict[str, Callable] | None
|
|
38
39
|
"""Possible type conversions"""
|
|
39
40
|
|
|
40
41
|
|
|
@@ -2,8 +2,9 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import enum
|
|
5
|
+
from collections.abc import Generator
|
|
5
6
|
from itertools import zip_longest
|
|
6
|
-
from typing import Any, Final,
|
|
7
|
+
from typing import TYPE_CHECKING, Any, Final, TypedDict, cast
|
|
7
8
|
|
|
8
9
|
from typing_extensions import TypeVar
|
|
9
10
|
|
|
@@ -11,6 +12,9 @@ from localstack.aws.api.cloudformation import ChangeAction
|
|
|
11
12
|
from localstack.services.cloudformation.resource_provider import ResourceProviderExecutor
|
|
12
13
|
from localstack.utils.strings import camel_to_snake_case
|
|
13
14
|
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from localstack.services.cloudformation.v2.entities import EngineParameter
|
|
17
|
+
|
|
14
18
|
T = TypeVar("T")
|
|
15
19
|
|
|
16
20
|
|
|
@@ -44,7 +48,7 @@ class NothingType:
|
|
|
44
48
|
return False
|
|
45
49
|
|
|
46
50
|
|
|
47
|
-
Maybe =
|
|
51
|
+
Maybe = T | NothingType
|
|
48
52
|
Nothing = NothingType()
|
|
49
53
|
|
|
50
54
|
|
|
@@ -86,7 +90,7 @@ class NormalisedGlobalTransformDefinition(TypedDict):
|
|
|
86
90
|
|
|
87
91
|
|
|
88
92
|
class Scope(str):
|
|
89
|
-
_ROOT_SCOPE: Final[str] =
|
|
93
|
+
_ROOT_SCOPE: Final[str] = ""
|
|
90
94
|
_SEPARATOR: Final[str] = "/"
|
|
91
95
|
|
|
92
96
|
def __new__(cls, scope: str = _ROOT_SCOPE) -> Scope:
|
|
@@ -533,16 +537,17 @@ class ChangeSetModel:
|
|
|
533
537
|
|
|
534
538
|
def __init__(
|
|
535
539
|
self,
|
|
536
|
-
before_template:
|
|
537
|
-
after_template:
|
|
538
|
-
before_parameters:
|
|
539
|
-
after_parameters:
|
|
540
|
+
before_template: dict | None,
|
|
541
|
+
after_template: dict | None,
|
|
542
|
+
before_parameters: dict | None,
|
|
543
|
+
after_parameters: dict[str, EngineParameter] | None,
|
|
540
544
|
):
|
|
541
545
|
self._before_template = before_template or Nothing
|
|
542
546
|
self._after_template = after_template or Nothing
|
|
543
547
|
self._before_parameters = before_parameters or Nothing
|
|
544
548
|
self._after_parameters = after_parameters or Nothing
|
|
545
549
|
self._visited_scopes = dict()
|
|
550
|
+
# TODO: move this modeling process to the `get_update_model` method as constructors shouldn't do work
|
|
546
551
|
self._node_template = self._model(
|
|
547
552
|
before_template=self._before_template, after_template=self._after_template
|
|
548
553
|
)
|
|
@@ -1008,9 +1013,26 @@ class ChangeSetModel:
|
|
|
1008
1013
|
|
|
1009
1014
|
def _visit_dynamic_parameter(self, parameter_name: str) -> ChangeSetEntity:
|
|
1010
1015
|
scope = Scope("Dynamic").open_scope("Parameters")
|
|
1011
|
-
scope_parameter, (
|
|
1016
|
+
scope_parameter, (before_parameter_dct, after_parameter_dct) = self._safe_access_in(
|
|
1012
1017
|
scope, parameter_name, self._before_parameters, self._after_parameters
|
|
1013
1018
|
)
|
|
1019
|
+
|
|
1020
|
+
before_parameter = Nothing
|
|
1021
|
+
if not is_nothing(before_parameter_dct):
|
|
1022
|
+
before_parameter = (
|
|
1023
|
+
before_parameter_dct.get("resolved_value")
|
|
1024
|
+
or before_parameter_dct["given_value"]
|
|
1025
|
+
or before_parameter_dct.get("default_value")
|
|
1026
|
+
)
|
|
1027
|
+
|
|
1028
|
+
after_parameter = Nothing
|
|
1029
|
+
if not is_nothing(after_parameter_dct):
|
|
1030
|
+
after_parameter = (
|
|
1031
|
+
after_parameter_dct.get("resolved_value")
|
|
1032
|
+
or after_parameter_dct["given_value"]
|
|
1033
|
+
or after_parameter_dct.get("default_value")
|
|
1034
|
+
)
|
|
1035
|
+
|
|
1014
1036
|
parameter = self._visit_value(
|
|
1015
1037
|
scope=scope_parameter, before_value=before_parameter, after_value=after_parameter
|
|
1016
1038
|
)
|
|
@@ -1425,7 +1447,7 @@ class ChangeSetModel:
|
|
|
1425
1447
|
return keys
|
|
1426
1448
|
|
|
1427
1449
|
@staticmethod
|
|
1428
|
-
def _name_if_intrinsic_function(value: Maybe[Any]) ->
|
|
1450
|
+
def _name_if_intrinsic_function(value: Maybe[Any]) -> str | None:
|
|
1429
1451
|
if isinstance(value, dict):
|
|
1430
1452
|
keys = ChangeSetModel._safe_keys_of(value)
|
|
1431
1453
|
if len(keys) == 1:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import json
|
|
4
|
-
from typing import Final
|
|
4
|
+
from typing import Final
|
|
5
5
|
|
|
6
6
|
import localstack.aws.api.cloudformation as cfn_api
|
|
7
7
|
from localstack.aws.api.cloudformation import Replacement
|
|
@@ -76,7 +76,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
|
76
76
|
resource_name=logical_name_of_resource,
|
|
77
77
|
node_template=self._change_set.update_model.node_template,
|
|
78
78
|
)
|
|
79
|
-
node_property:
|
|
79
|
+
node_property: NodeProperty | None = self._get_node_property_for(
|
|
80
80
|
property_name=attribute_name, node_resource=node_resource
|
|
81
81
|
)
|
|
82
82
|
if node_property is not None:
|
|
@@ -116,9 +116,9 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
|
116
116
|
self,
|
|
117
117
|
logical_id: str,
|
|
118
118
|
type_: str,
|
|
119
|
-
physical_id:
|
|
120
|
-
before_properties:
|
|
121
|
-
after_properties:
|
|
119
|
+
physical_id: str | None,
|
|
120
|
+
before_properties: PreprocProperties | None,
|
|
121
|
+
after_properties: PreprocProperties | None,
|
|
122
122
|
# TODO: remove default
|
|
123
123
|
requires_replacement: bool = False,
|
|
124
124
|
) -> None:
|
|
@@ -156,7 +156,7 @@ class ChangeSetModelDescriber(ChangeSetModelPreproc):
|
|
|
156
156
|
)
|
|
157
157
|
|
|
158
158
|
def _describe_resource_change(
|
|
159
|
-
self, name: str, before:
|
|
159
|
+
self, name: str, before: PreprocResource | None, after: PreprocResource | None
|
|
160
160
|
) -> None:
|
|
161
161
|
if before == after:
|
|
162
162
|
# unchanged: nothing to do.
|