localstack-core 4.6.1.dev60__py3-none-any.whl → 4.10.1.dev12__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- localstack/aws/api/apigateway/__init__.py +87 -110
- localstack/aws/api/cloudformation/__init__.py +18 -4
- localstack/aws/api/cloudwatch/__init__.py +41 -1
- localstack/aws/api/config/__init__.py +4 -0
- localstack/aws/api/core.py +8 -5
- localstack/aws/api/dynamodb/__init__.py +30 -0
- localstack/aws/api/ec2/__init__.py +1545 -66
- localstack/aws/api/events/__init__.py +12 -16
- localstack/aws/api/iam/__init__.py +7 -0
- localstack/aws/api/kinesis/__init__.py +19 -0
- localstack/aws/api/kms/__init__.py +6 -0
- localstack/aws/api/lambda_/__init__.py +36 -23
- localstack/aws/api/logs/__init__.py +20 -8
- localstack/aws/api/opensearch/__init__.py +16 -0
- localstack/aws/api/pipes/__init__.py +24 -32
- localstack/aws/api/redshift/__init__.py +9 -3
- localstack/aws/api/route53/__init__.py +5 -0
- localstack/aws/api/s3/__init__.py +12 -0
- localstack/aws/api/s3control/__init__.py +56 -0
- localstack/aws/api/scheduler/__init__.py +14 -16
- localstack/aws/api/ssm/__init__.py +2 -0
- localstack/aws/api/stepfunctions/__init__.py +88 -114
- localstack/aws/api/support/__init__.py +8 -9
- localstack/aws/api/transcribe/__init__.py +17 -0
- localstack/aws/chain.py +2 -2
- localstack/aws/client.py +14 -11
- localstack/aws/connect.py +42 -41
- localstack/aws/forwarder.py +57 -9
- localstack/aws/gateway.py +1 -3
- localstack/aws/handlers/analytics.py +2 -3
- localstack/aws/handlers/cors.py +4 -5
- localstack/aws/handlers/internal_requests.py +6 -1
- localstack/aws/handlers/logging.py +13 -4
- localstack/aws/handlers/metric_handler.py +44 -5
- localstack/aws/handlers/service.py +48 -28
- localstack/aws/mocking.py +18 -27
- localstack/aws/patches.py +2 -2
- localstack/aws/protocol/op_router.py +11 -10
- localstack/aws/protocol/parser.py +475 -49
- localstack/aws/protocol/serializer.py +723 -106
- localstack/aws/protocol/service_router.py +133 -33
- localstack/aws/protocol/validate.py +6 -6
- localstack/aws/scaffold.py +9 -10
- localstack/aws/serving/edge.py +5 -6
- localstack/aws/serving/hypercorn.py +2 -2
- localstack/aws/serving/twisted.py +1 -2
- localstack/aws/serving/werkzeug.py +2 -2
- localstack/aws/skeleton.py +12 -11
- localstack/aws/spec-patches.json +58 -0
- localstack/aws/spec.py +66 -46
- localstack/cli/exceptions.py +1 -1
- localstack/cli/localstack.py +11 -11
- localstack/cli/lpm.py +4 -5
- localstack/cli/plugins.py +1 -1
- localstack/cli/profiles.py +1 -2
- localstack/config.py +44 -30
- localstack/constants.py +4 -29
- localstack/deprecations.py +5 -5
- localstack/dev/kubernetes/__main__.py +130 -7
- localstack/dev/run/__main__.py +5 -5
- localstack/dev/run/configurators.py +1 -4
- localstack/dev/run/paths.py +6 -6
- localstack/dns/models.py +2 -1
- localstack/dns/plugins.py +5 -1
- localstack/dns/server.py +16 -6
- localstack/http/dispatcher.py +1 -2
- localstack/http/response.py +2 -2
- localstack/http/router.py +1 -1
- localstack/http/trace.py +2 -1
- localstack/logging/format.py +6 -6
- localstack/packages/api.py +13 -12
- localstack/packages/core.py +4 -4
- localstack/packages/debugpy.py +1 -3
- localstack/packages/ffmpeg.py +1 -2
- localstack/packages/java.py +38 -12
- localstack/packages/plugins.py +0 -8
- localstack/runtime/analytics.py +3 -0
- localstack/runtime/hooks.py +1 -1
- localstack/runtime/init.py +8 -9
- localstack/runtime/main.py +5 -5
- localstack/runtime/patches.py +2 -2
- localstack/runtime/shutdown.py +2 -1
- localstack/services/apigateway/exporter.py +1 -2
- localstack/services/apigateway/helpers.py +7 -10
- localstack/services/apigateway/legacy/context.py +21 -21
- localstack/services/apigateway/legacy/helpers.py +27 -28
- localstack/services/apigateway/legacy/integration.py +11 -10
- localstack/services/apigateway/legacy/invocations.py +6 -5
- localstack/services/apigateway/legacy/provider.py +148 -68
- localstack/services/apigateway/legacy/router_asf.py +2 -2
- localstack/services/apigateway/legacy/templates.py +6 -6
- localstack/services/apigateway/models.py +16 -16
- localstack/services/apigateway/next_gen/execute_api/api.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/context.py +25 -25
- localstack/services/apigateway/next_gen/execute_api/handlers/api_key_validation.py +2 -5
- localstack/services/apigateway/next_gen/execute_api/handlers/method_request.py +7 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/parse.py +1 -2
- localstack/services/apigateway/next_gen/execute_api/handlers/resource_router.py +2 -3
- localstack/services/apigateway/next_gen/execute_api/header_utils.py +1 -1
- localstack/services/apigateway/next_gen/execute_api/helpers.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +9 -6
- localstack/services/apigateway/next_gen/execute_api/integrations/http.py +12 -12
- localstack/services/apigateway/next_gen/execute_api/router.py +31 -0
- localstack/services/apigateway/next_gen/execute_api/template_mapping.py +2 -2
- localstack/services/apigateway/next_gen/execute_api/test_invoke.py +114 -9
- localstack/services/apigateway/next_gen/execute_api/variables.py +63 -63
- localstack/services/apigateway/next_gen/provider.py +5 -0
- localstack/services/apigateway/resource_providers/aws_apigateway_account.py +3 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_account_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey.py +14 -14
- localstack/services/apigateway/resource_providers/aws_apigateway_apikey_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_basepathmapping_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment.py +46 -46
- localstack/services/apigateway/resource_providers/aws_apigateway_deployment_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_domainname_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse.py +7 -7
- localstack/services/apigateway/resource_providers/aws_apigateway_gatewayresponse_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_method.py +36 -36
- localstack/services/apigateway/resource_providers/aws_apigateway_method_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_model.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_model_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_requestvalidator_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_resource.py +6 -6
- localstack/services/apigateway/resource_providers/aws_apigateway_resource_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi.py +26 -26
- localstack/services/apigateway/resource_providers/aws_apigateway_restapi_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_stage.py +33 -33
- localstack/services/apigateway/resource_providers/aws_apigateway_stage_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan.py +18 -18
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplan_plugin.py +1 -3
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey.py +5 -5
- localstack/services/apigateway/resource_providers/aws_apigateway_usageplankey_plugin.py +1 -3
- localstack/services/cdk/resource_providers/cdk_metadata.py +4 -3
- localstack/services/cdk/resource_providers/cdk_metadata_plugin.py +1 -3
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate.py +14 -14
- localstack/services/certificatemanager/resource_providers/aws_certificatemanager_certificate_plugin.py +1 -3
- localstack/services/cloudformation/api_utils.py +4 -8
- localstack/services/cloudformation/cfn_utils.py +2 -2
- localstack/services/cloudformation/deployment_utils.py +14 -12
- localstack/services/cloudformation/engine/changes.py +3 -3
- localstack/services/cloudformation/engine/entities.py +27 -17
- localstack/services/cloudformation/engine/parameters.py +4 -4
- localstack/services/cloudformation/engine/template_deployer.py +15 -14
- localstack/services/cloudformation/engine/template_utils.py +34 -12
- localstack/services/cloudformation/engine/transformers.py +11 -8
- localstack/services/cloudformation/engine/types.py +5 -4
- localstack/services/cloudformation/engine/v2/change_set_model.py +336 -39
- localstack/services/cloudformation/engine/v2/change_set_model_describer.py +96 -17
- localstack/services/cloudformation/engine/v2/change_set_model_executor.py +289 -136
- localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +315 -146
- localstack/services/cloudformation/engine/v2/change_set_model_transform.py +380 -105
- localstack/services/cloudformation/engine/v2/change_set_model_validator.py +183 -0
- localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +6 -0
- localstack/services/cloudformation/engine/v2/resolving.py +102 -0
- localstack/services/cloudformation/engine/yaml_parser.py +9 -2
- localstack/services/cloudformation/provider.py +11 -6
- localstack/services/cloudformation/provider_utils.py +34 -4
- localstack/services/cloudformation/resource_provider.py +31 -21
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro.py +7 -7
- localstack/services/cloudformation/resource_providers/aws_cloudformation_macro_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack.py +9 -9
- localstack/services/cloudformation/resource_providers/aws_cloudformation_stack_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition.py +6 -6
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitcondition_plugin.py +1 -3
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle.py +2 -2
- localstack/services/cloudformation/resource_providers/aws_cloudformation_waitconditionhandle_plugin.py +1 -3
- localstack/services/cloudformation/resources.py +24149 -0
- localstack/services/cloudformation/scaffolding/__main__.py +13 -12
- localstack/services/cloudformation/scaffolding/propgen.py +2 -2
- localstack/services/cloudformation/service_models.py +2 -2
- localstack/services/cloudformation/stores.py +33 -22
- localstack/services/cloudformation/v2/entities.py +103 -88
- localstack/services/cloudformation/v2/provider.py +872 -131
- localstack/services/cloudformation/v2/types.py +38 -0
- localstack/services/cloudformation/v2/utils.py +4 -1
- localstack/services/cloudwatch/alarm_scheduler.py +11 -8
- localstack/services/cloudwatch/cloudwatch_database_helper.py +4 -5
- localstack/services/cloudwatch/models.py +5 -7
- localstack/services/cloudwatch/provider.py +30 -25
- localstack/services/cloudwatch/provider_v2.py +27 -32
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py +40 -40
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm_plugin.py +1 -3
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm.py +12 -12
- localstack/services/cloudwatch/resource_providers/aws_cloudwatch_compositealarm_plugin.py +1 -3
- localstack/services/dynamodb/packages.py +3 -3
- localstack/services/dynamodb/provider.py +159 -18
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable.py +63 -63
- localstack/services/dynamodb/resource_providers/aws_dynamodb_globaltable_plugin.py +1 -3
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table.py +57 -57
- localstack/services/dynamodb/resource_providers/aws_dynamodb_table_plugin.py +1 -3
- localstack/services/dynamodb/server.py +2 -2
- localstack/services/dynamodb/utils.py +13 -14
- localstack/services/dynamodb/v2/provider.py +157 -18
- localstack/services/dynamodbstreams/dynamodbstreams_api.py +2 -2
- localstack/services/dynamodbstreams/models.py +1 -3
- localstack/services/ec2/patches.py +26 -5
- localstack/services/ec2/provider.py +3 -3
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_dhcpoptions_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_instance.py +96 -96
- localstack/services/ec2/resource_providers/aws_ec2_instance_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_internetgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_keypair.py +10 -10
- localstack/services/ec2/resource_providers/aws_ec2_keypair_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_natgateway.py +13 -13
- localstack/services/ec2/resource_providers/aws_ec2_natgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_networkacl.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_networkacl_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist.py +14 -14
- localstack/services/ec2/resource_providers/aws_ec2_prefixlist_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_route.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_route_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_routetable.py +6 -6
- localstack/services/ec2/resource_providers/aws_ec2_routetable_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup.py +29 -29
- localstack/services/ec2/resource_providers/aws_ec2_securitygroup_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnet.py +19 -19
- localstack/services/ec2/resource_providers/aws_ec2_subnet_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation.py +4 -4
- localstack/services/ec2/resource_providers/aws_ec2_subnetroutetableassociation_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway.py +16 -16
- localstack/services/ec2/resource_providers/aws_ec2_transitgateway_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment.py +9 -9
- localstack/services/ec2/resource_providers/aws_ec2_transitgatewayattachment_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpc.py +15 -15
- localstack/services/ec2/resource_providers/aws_ec2_vpc_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint.py +29 -22
- localstack/services/ec2/resource_providers/aws_ec2_vpcendpoint_plugin.py +1 -3
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment.py +5 -5
- localstack/services/ec2/resource_providers/aws_ec2_vpcgatewayattachment_plugin.py +1 -3
- localstack/services/ecr/resource_providers/aws_ecr_repository.py +22 -19
- localstack/services/ecr/resource_providers/aws_ecr_repository_plugin.py +1 -3
- localstack/services/edge.py +6 -6
- localstack/services/es/provider.py +21 -21
- localstack/services/events/archive.py +2 -2
- localstack/services/events/connection.py +5 -5
- localstack/services/events/event_bus.py +9 -9
- localstack/services/events/event_rule_engine.py +31 -13
- localstack/services/events/models.py +29 -30
- localstack/services/events/provider.py +29 -26
- localstack/services/events/replay.py +3 -3
- localstack/services/events/resource_providers/aws_events_apidestination.py +8 -8
- localstack/services/events/resource_providers/aws_events_apidestination_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_connection.py +27 -27
- localstack/services/events/resource_providers/aws_events_connection_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbus.py +9 -9
- localstack/services/events/resource_providers/aws_events_eventbus_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_eventbuspolicy.py +11 -11
- localstack/services/events/resource_providers/aws_events_eventbuspolicy_plugin.py +1 -3
- localstack/services/events/resource_providers/aws_events_rule.py +82 -82
- localstack/services/events/resource_providers/aws_events_rule_plugin.py +1 -3
- localstack/services/events/rule.py +15 -15
- localstack/services/events/target.py +21 -13
- localstack/services/events/utils.py +7 -7
- localstack/services/events/v1/models.py +1 -3
- localstack/services/events/v1/provider.py +15 -15
- localstack/services/firehose/models.py +1 -3
- localstack/services/firehose/provider.py +25 -16
- localstack/services/iam/iam_patches.py +5 -6
- localstack/services/iam/provider.py +14 -119
- localstack/services/iam/resource_providers/aws_iam_accesskey.py +6 -6
- localstack/services/iam/resource_providers/aws_iam_accesskey_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_group.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_group_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_instanceprofile.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_instanceprofile_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_managedpolicy.py +9 -9
- localstack/services/iam/resource_providers/aws_iam_managedpolicy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_policy.py +7 -7
- localstack/services/iam/resource_providers/aws_iam_policy_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_role.py +16 -16
- localstack/services/iam/resource_providers/aws_iam_role_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servercertificate.py +10 -10
- localstack/services/iam/resource_providers/aws_iam_servercertificate_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole.py +5 -5
- localstack/services/iam/resource_providers/aws_iam_servicelinkedrole_plugin.py +1 -3
- localstack/services/iam/resource_providers/aws_iam_user.py +17 -17
- localstack/services/iam/resource_providers/aws_iam_user_plugin.py +1 -3
- localstack/services/iam/resources/policy_simulator.py +133 -0
- localstack/services/kinesis/kinesis_mock_server.py +7 -8
- localstack/services/kinesis/models.py +17 -5
- localstack/services/kinesis/packages.py +3 -3
- localstack/services/kinesis/provider.py +86 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_stream.py +13 -13
- localstack/services/kinesis/resource_providers/aws_kinesis_stream_plugin.py +1 -3
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer.py +7 -7
- localstack/services/kinesis/resource_providers/aws_kinesis_streamconsumer_plugin.py +1 -3
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream.py +191 -191
- localstack/services/kinesisfirehose/resource_providers/aws_kinesisfirehose_deliverystream_plugin.py +1 -3
- localstack/services/kms/models.py +21 -18
- localstack/services/kms/provider.py +62 -26
- localstack/services/kms/resource_providers/aws_kms_alias.py +3 -3
- localstack/services/kms/resource_providers/aws_kms_alias_plugin.py +1 -3
- localstack/services/kms/resource_providers/aws_kms_key.py +14 -14
- localstack/services/kms/resource_providers/aws_kms_key_plugin.py +1 -3
- localstack/services/kms/utils.py +4 -3
- localstack/services/lambda_/api_utils.py +19 -16
- localstack/services/lambda_/custom_endpoints.py +2 -2
- localstack/services/lambda_/event_source_mapping/esm_worker_factory.py +4 -7
- localstack/services/lambda_/event_source_mapping/pipe_utils.py +2 -2
- localstack/services/lambda_/event_source_mapping/pollers/stream_poller.py +1 -1
- localstack/services/lambda_/event_source_mapping/senders/sender_utils.py +2 -1
- localstack/services/lambda_/hooks.py +6 -1
- localstack/services/lambda_/invocation/assignment.py +1 -2
- localstack/services/lambda_/invocation/docker_runtime_executor.py +7 -11
- localstack/services/lambda_/invocation/event_manager.py +1 -1
- localstack/services/lambda_/invocation/execution_environment.py +4 -4
- localstack/services/lambda_/invocation/executor_endpoint.py +8 -11
- localstack/services/lambda_/invocation/internal_sqs_queue.py +6 -10
- localstack/services/lambda_/invocation/lambda_models.py +33 -30
- localstack/services/lambda_/invocation/lambda_service.py +12 -5
- localstack/services/lambda_/invocation/logs.py +2 -3
- localstack/services/lambda_/invocation/runtime_executor.py +3 -3
- localstack/services/lambda_/invocation/version_manager.py +31 -8
- localstack/services/lambda_/ldm.py +14 -0
- localstack/services/lambda_/packages.py +3 -4
- localstack/services/lambda_/provider.py +9 -26
- localstack/services/lambda_/provider_utils.py +1 -1
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_codesigningconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_eventinvokeconfig_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping.py +39 -39
- localstack/services/lambda_/resource_providers/aws_lambda_eventsourcemapping_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_function.py +54 -54
- localstack/services/lambda_/resource_providers/aws_lambda_function_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion.py +11 -11
- localstack/services/lambda_/resource_providers/aws_lambda_layerversion_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission.py +6 -6
- localstack/services/lambda_/resource_providers/aws_lambda_layerversionpermission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_permission.py +10 -10
- localstack/services/lambda_/resource_providers/aws_lambda_permission_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_url.py +15 -15
- localstack/services/lambda_/resource_providers/aws_lambda_url_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/aws_lambda_version.py +8 -8
- localstack/services/lambda_/resource_providers/aws_lambda_version_plugin.py +1 -3
- localstack/services/lambda_/resource_providers/lambda_alias.py +12 -12
- localstack/services/lambda_/resource_providers/lambda_alias_plugin.py +1 -3
- localstack/services/lambda_/runtimes.py +1 -3
- localstack/services/lambda_/urlrouter.py +14 -1
- localstack/services/logs/models.py +1 -3
- localstack/services/logs/provider.py +39 -22
- localstack/services/logs/resource_providers/aws_logs_loggroup.py +9 -9
- localstack/services/logs/resource_providers/aws_logs_loggroup_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_logstream.py +4 -4
- localstack/services/logs/resource_providers/aws_logs_logstream_plugin.py +1 -3
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter.py +7 -7
- localstack/services/logs/resource_providers/aws_logs_subscriptionfilter_plugin.py +1 -3
- localstack/services/moto.py +5 -4
- localstack/services/opensearch/cluster.py +28 -20
- localstack/services/opensearch/cluster_manager.py +13 -14
- localstack/services/opensearch/models.py +1 -3
- localstack/services/opensearch/packages.py +27 -9
- localstack/services/opensearch/provider.py +15 -10
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain.py +61 -61
- localstack/services/opensearch/resource_providers/aws_elasticsearch_domain_plugin.py +1 -3
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain.py +89 -89
- localstack/services/opensearch/resource_providers/aws_opensearchservice_domain_plugin.py +1 -3
- localstack/services/opensearch/versions.py +57 -10
- localstack/services/plugins.py +37 -32
- localstack/services/providers.py +10 -2
- localstack/services/redshift/provider.py +0 -21
- localstack/services/redshift/resource_providers/aws_redshift_cluster.py +57 -57
- localstack/services/redshift/resource_providers/aws_redshift_cluster_plugin.py +1 -3
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group.py +21 -21
- localstack/services/resource_groups/resource_providers/aws_resourcegroups_group_plugin.py +1 -3
- localstack/services/route53/models.py +1 -3
- localstack/services/route53/provider.py +1 -2
- localstack/services/route53/resource_providers/aws_route53_healthcheck.py +6 -6
- localstack/services/route53/resource_providers/aws_route53_healthcheck_plugin.py +1 -3
- localstack/services/route53/resource_providers/aws_route53_recordset.py +27 -27
- localstack/services/route53/resource_providers/aws_route53_recordset_plugin.py +1 -3
- localstack/services/route53resolver/models.py +8 -10
- localstack/services/route53resolver/provider.py +12 -12
- localstack/services/s3/codec.py +2 -2
- localstack/services/s3/constants.py +5 -2
- localstack/services/s3/cors.py +8 -8
- localstack/services/s3/models.py +73 -73
- localstack/services/s3/notifications.py +74 -58
- localstack/services/s3/presigned_url.py +41 -59
- localstack/services/s3/provider.py +86 -29
- localstack/services/s3/resource_providers/aws_s3_bucket.py +180 -180
- localstack/services/s3/resource_providers/aws_s3_bucket_plugin.py +1 -3
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy.py +4 -4
- localstack/services/s3/resource_providers/aws_s3_bucketpolicy_plugin.py +1 -3
- localstack/services/s3/storage/core.py +4 -3
- localstack/services/s3/storage/ephemeral.py +7 -6
- localstack/services/s3/utils.py +51 -31
- localstack/services/s3/validation.py +47 -33
- localstack/services/s3/website_hosting.py +9 -7
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule.py +60 -60
- localstack/services/scheduler/resource_providers/aws_scheduler_schedule_plugin.py +1 -3
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup.py +9 -9
- localstack/services/scheduler/resource_providers/aws_scheduler_schedulegroup_plugin.py +1 -3
- localstack/services/secretsmanager/provider.py +10 -12
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_resourcepolicy_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule.py +21 -21
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_rotationschedule_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret.py +23 -23
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secret_plugin.py +1 -3
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment.py +5 -5
- localstack/services/secretsmanager/resource_providers/aws_secretsmanager_secrettargetattachment_plugin.py +1 -3
- localstack/services/ses/models.py +8 -1
- localstack/services/ses/provider.py +128 -55
- localstack/services/ses/resource_providers/aws_ses_emailidentity.py +21 -21
- localstack/services/ses/resource_providers/aws_ses_emailidentity_plugin.py +1 -3
- localstack/services/sns/constants.py +7 -1
- localstack/services/sns/executor.py +9 -2
- localstack/services/sns/models.py +25 -25
- localstack/services/sns/provider.py +9 -7
- localstack/services/sns/publisher.py +37 -23
- localstack/services/sns/resource_providers/aws_sns_subscription.py +13 -13
- localstack/services/sns/resource_providers/aws_sns_subscription_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topic.py +16 -16
- localstack/services/sns/resource_providers/aws_sns_topic_plugin.py +1 -3
- localstack/services/sns/resource_providers/aws_sns_topicpolicy.py +4 -4
- localstack/services/sns/resource_providers/aws_sns_topicpolicy_plugin.py +1 -3
- localstack/services/sns/v2/models.py +167 -0
- localstack/services/sns/v2/provider.py +867 -0
- localstack/services/sns/v2/utils.py +130 -0
- localstack/services/sqs/constants.py +2 -2
- localstack/services/sqs/developer_api.py +205 -0
- localstack/services/sqs/models.py +71 -36
- localstack/services/sqs/provider.py +56 -332
- localstack/services/sqs/query_api.py +8 -5
- localstack/services/sqs/resource_providers/aws_sqs_queue.py +21 -21
- localstack/services/sqs/resource_providers/aws_sqs_queue_plugin.py +1 -3
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy.py +7 -5
- localstack/services/sqs/resource_providers/aws_sqs_queuepolicy_plugin.py +1 -3
- localstack/services/sqs/utils.py +123 -4
- localstack/services/ssm/provider.py +3 -4
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow.py +15 -15
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindow_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtarget_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask.py +48 -48
- localstack/services/ssm/resource_providers/aws_ssm_maintenancewindowtask_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_parameter.py +10 -10
- localstack/services/ssm/resource_providers/aws_ssm_parameter_plugin.py +1 -3
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline.py +29 -29
- localstack/services/ssm/resource_providers/aws_ssm_patchbaseline_plugin.py +1 -3
- localstack/services/stepfunctions/asl/antlt4utils/antlr4utils.py +3 -4
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_decl_binding.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/assign/assign_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/catch/catcher_decl.py +9 -9
- localstack/services/stepfunctions/asl/component/common/error_name/custom_error_name.py +2 -2
- localstack/services/stepfunctions/asl/component/common/error_name/error_name.py +4 -4
- localstack/services/stepfunctions/asl/component/common/error_name/failure_event.py +8 -8
- localstack/services/stepfunctions/asl/component/common/error_name/states_error_name_type.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_binding.py +2 -2
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_array.py +1 -1
- localstack/services/stepfunctions/asl/component/common/jsonata/jsonata_template_value_object.py +1 -1
- localstack/services/stepfunctions/asl/component/common/path/input_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/output_path.py +4 -4
- localstack/services/stepfunctions/asl/component/common/path/result_path.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadarr/payload_arr.py +1 -1
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadbinding/payload_binding.py +3 -3
- localstack/services/stepfunctions/asl/component/common/payload/payloadvalue/payloadtmpl/payload_tmpl.py +1 -1
- localstack/services/stepfunctions/asl/component/common/retry/retrier_decl.py +8 -8
- localstack/services/stepfunctions/asl/component/common/string/string_expression.py +3 -3
- localstack/services/stepfunctions/asl/component/common/timeouts/timeout.py +3 -3
- localstack/services/stepfunctions/asl/component/eval_component.py +2 -3
- localstack/services/stepfunctions/asl/component/intrinsic/argument/argument.py +4 -4
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/array/array_partition.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/generic/string_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_array.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/function/statesfunction/states_function_format.py +1 -1
- localstack/services/stepfunctions/asl/component/intrinsic/jsonata.py +3 -3
- localstack/services/stepfunctions/asl/component/intrinsic/member.py +1 -1
- localstack/services/stepfunctions/asl/component/program/program.py +9 -9
- localstack/services/stepfunctions/asl/component/program/states.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state.py +10 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/choice_rule.py +11 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/comparison.py +5 -11
- localstack/services/stepfunctions/asl/component/state/state_choice/comparison/operator/implementations/is_operator.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_choice/state_choice.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/execute_state.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/item_reader_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/reader_config/reader_config_decl.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/item_reader/resource_eval/resource_output_transformer/resource_output_transformer_csv.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/distributed_iteration_component.py +8 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/inline_iteration_component.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/distributed_item_processor_worker.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/inline_item_processor_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/itemprocessor/map_run_record.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_component.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_declaration.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iteration_worker.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/distributed_iterator_worker.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator.py +1 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/iterator/inline_iterator_worker.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/iteration/job.py +9 -9
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/result_writer/resource_eval/resource_eval_s3.py +2 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_map/state_map.py +12 -13
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branch_worker.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/branches_decl.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_parallel/state_parallel.py +2 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/lambda_eval_utils.py +7 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/resource.py +3 -3
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service.py +10 -10
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_api_gateway.py +18 -18
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_aws_sdk.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_batch.py +8 -7
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_callback.py +18 -17
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_dynamodb.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_ecs.py +5 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_events.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_glue.py +7 -6
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_lambda.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sfn.py +9 -8
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sns.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/service/state_task_service_sqs.py +4 -4
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task.py +5 -5
- localstack/services/stepfunctions/asl/component/state/state_execution/state_task/state_task_lambda.py +2 -2
- localstack/services/stepfunctions/asl/component/state/state_fail/state_fail.py +3 -5
- localstack/services/stepfunctions/asl/component/state/state_pass/state_pass.py +5 -7
- localstack/services/stepfunctions/asl/component/state/state_succeed/state_succeed.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/state_wait.py +1 -1
- localstack/services/stepfunctions/asl/component/state/state_wait/wait_function/timestamp.py +2 -2
- localstack/services/stepfunctions/asl/eval/callback/callback.py +18 -18
- localstack/services/stepfunctions/asl/eval/environment.py +22 -24
- localstack/services/stepfunctions/asl/eval/evaluation_details.py +3 -5
- localstack/services/stepfunctions/asl/eval/event/event_manager.py +10 -10
- localstack/services/stepfunctions/asl/eval/event/logging.py +3 -3
- localstack/services/stepfunctions/asl/eval/program_state.py +8 -8
- localstack/services/stepfunctions/asl/eval/states.py +12 -12
- localstack/services/stepfunctions/asl/eval/test_state/environment.py +3 -5
- localstack/services/stepfunctions/asl/eval/variable_store.py +6 -6
- localstack/services/stepfunctions/asl/jsonata/jsonata.py +7 -6
- localstack/services/stepfunctions/asl/parse/asl_parser.py +1 -1
- localstack/services/stepfunctions/asl/parse/intrinsic/preprocessor.py +2 -3
- localstack/services/stepfunctions/asl/parse/preprocessor.py +44 -44
- localstack/services/stepfunctions/asl/parse/typed_props.py +2 -2
- localstack/services/stepfunctions/asl/static_analyser/intrinsic/variable_names_intrinsic_static_analyser.py +1 -1
- localstack/services/stepfunctions/asl/static_analyser/variable_references_static_analyser.py +2 -2
- localstack/services/stepfunctions/asl/utils/encoding.py +2 -2
- localstack/services/stepfunctions/asl/utils/json_path.py +2 -2
- localstack/services/stepfunctions/backend/activity.py +4 -4
- localstack/services/stepfunctions/backend/alias.py +8 -8
- localstack/services/stepfunctions/backend/execution.py +29 -30
- localstack/services/stepfunctions/backend/execution_worker.py +7 -7
- localstack/services/stepfunctions/backend/state_machine.py +28 -28
- localstack/services/stepfunctions/backend/test_state/execution.py +3 -4
- localstack/services/stepfunctions/backend/test_state/execution_worker.py +1 -3
- localstack/services/stepfunctions/mocking/mock_config.py +9 -9
- localstack/services/stepfunctions/mocking/mock_config_file.py +10 -10
- localstack/services/stepfunctions/packages.py +14 -5
- localstack/services/stepfunctions/provider.py +34 -44
- localstack/services/stepfunctions/quotas.py +2 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity.py +6 -6
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_activity_plugin.py +1 -3
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine.py +25 -25
- localstack/services/stepfunctions/resource_providers/aws_stepfunctions_statemachine_plugin.py +1 -3
- localstack/services/stepfunctions/stepfunctions_utils.py +1 -2
- localstack/services/stores.py +8 -8
- localstack/services/transcribe/packages.py +1 -3
- localstack/services/transcribe/provider.py +8 -3
- localstack/state/codecs.py +61 -0
- localstack/state/core.py +11 -5
- localstack/state/inspect.py +4 -4
- localstack/state/pickle.py +36 -23
- localstack/testing/aws/asf_utils.py +3 -2
- localstack/testing/aws/cloudformation_utils.py +1 -1
- localstack/testing/aws/lambda_utils.py +15 -14
- localstack/testing/aws/util.py +3 -2
- localstack/testing/pytest/cloudformation/fixtures.py +68 -18
- localstack/testing/pytest/container.py +5 -5
- localstack/testing/pytest/filters.py +1 -3
- localstack/testing/pytest/fixtures.py +188 -49
- localstack/testing/pytest/in_memory_localstack.py +1 -3
- localstack/testing/pytest/marking.py +42 -15
- localstack/testing/pytest/path_filter.py +1 -1
- localstack/testing/pytest/stepfunctions/fixtures.py +4 -4
- localstack/testing/pytest/stepfunctions/utils.py +11 -10
- localstack/testing/pytest/util.py +1 -1
- localstack/testing/pytest/validation_tracking.py +3 -4
- localstack/testing/scenario/provisioning.py +11 -10
- localstack/testing/snapshots/transformer_utility.py +8 -3
- localstack/testing/testselection/matching.py +2 -2
- localstack/testing/testselection/opt_out.py +1 -1
- localstack/testing/testselection/scripts/filter_by_test_selection.py +1 -1
- localstack/testing/testselection/scripts/generate_test_selection.py +1 -1
- localstack/testing/testselection/testselection.py +2 -2
- localstack/utils/analytics/cli.py +2 -3
- localstack/utils/analytics/client.py +5 -5
- localstack/utils/analytics/events.py +2 -2
- localstack/utils/analytics/metadata.py +6 -4
- localstack/utils/analytics/metrics/counter.py +11 -18
- localstack/utils/analytics/metrics/registry.py +2 -2
- localstack/utils/analytics/publisher.py +4 -5
- localstack/utils/analytics/service_providers.py +19 -0
- localstack/utils/analytics/service_request_aggregator.py +4 -4
- localstack/utils/archives.py +12 -12
- localstack/utils/asyncio.py +2 -2
- localstack/utils/aws/arns.py +26 -31
- localstack/utils/aws/aws_responses.py +21 -28
- localstack/utils/aws/aws_stack.py +7 -12
- localstack/utils/aws/dead_letter_queue.py +4 -9
- localstack/utils/aws/message_forwarding.py +8 -11
- localstack/utils/aws/request_context.py +5 -6
- localstack/utils/aws/resources.py +1 -1
- localstack/utils/aws/templating.py +4 -4
- localstack/utils/batch_policy.py +4 -4
- localstack/utils/bootstrap.py +37 -30
- localstack/utils/catalog/catalog.py +139 -0
- localstack/utils/catalog/catalog_loader.py +119 -0
- localstack/utils/catalog/common.py +58 -0
- localstack/utils/catalog/plugins.py +28 -0
- localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
- localstack/utils/collections.py +33 -27
- localstack/utils/config_listener.py +2 -2
- localstack/utils/container_networking.py +5 -6
- localstack/utils/container_utils/container_client.py +156 -160
- localstack/utils/container_utils/docker_cmd_client.py +97 -81
- localstack/utils/container_utils/docker_sdk_client.py +75 -72
- localstack/utils/crypto.py +12 -13
- localstack/utils/diagnose.py +11 -12
- localstack/utils/docker_utils.py +11 -7
- localstack/utils/files.py +34 -15
- localstack/utils/functions.py +5 -4
- localstack/utils/http.py +14 -14
- localstack/utils/iputils.py +2 -1
- localstack/utils/json.py +21 -7
- localstack/utils/kinesis/kinesis_connector.py +2 -1
- localstack/utils/net.py +25 -17
- localstack/utils/no_exit_argument_parser.py +2 -2
- localstack/utils/numbers.py +9 -2
- localstack/utils/objects.py +15 -14
- localstack/utils/patch.py +14 -7
- localstack/utils/platform.py +2 -2
- localstack/utils/run.py +15 -14
- localstack/utils/scheduler.py +13 -12
- localstack/utils/server/tcp_proxy.py +2 -2
- localstack/utils/serving.py +3 -4
- localstack/utils/strings.py +15 -16
- localstack/utils/sync.py +126 -1
- localstack/utils/tagging.py +10 -8
- localstack/utils/testutil.py +17 -17
- localstack/utils/threads.py +3 -3
- localstack/utils/time.py +12 -4
- localstack/utils/urls.py +1 -3
- localstack/utils/xml.py +1 -1
- localstack/utils/xray/traceid.py +1 -1
- localstack/version.py +16 -3
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/METADATA +18 -13
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/RECORD +663 -655
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/entry_points.txt +8 -4
- localstack_core-4.10.1.dev12.dist-info/plux.json +1 -0
- localstack/packages/terraform.py +0 -47
- localstack/services/cloudformation/deploy.html +0 -144
- localstack/services/cloudformation/deploy_ui.py +0 -47
- localstack/services/cloudformation/plugins.py +0 -12
- localstack/services/lambda_/lambda_debug_mode/ldm.py +0 -375
- localstack/services/lambda_/lambda_debug_mode/ldm_config_file.py +0 -178
- localstack/services/lambda_/lambda_debug_mode/ldm_types.py +0 -11
- localstack/services/lambda_/lambda_debug_mode/ldm_utils.py +0 -43
- localstack_core-4.6.1.dev60.dist-info/plux.json +0 -1
- /localstack/{services/lambda_/lambda_debug_mode/__init__.py → testing/pytest/cloudformation/transformers.py} +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.6.1.dev60.data → localstack_core-4.10.1.dev12.data}/scripts/localstack.bat +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/WHEEL +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.6.1.dev60.dist-info → localstack_core-4.10.1.dev12.dist-info}/top_level.txt +0 -0
localstack/aws/spec-patches.json
CHANGED
|
@@ -1329,6 +1329,26 @@
|
|
|
1329
1329
|
"documentation": "<p>The Content-MD5 you specified did not match what we received.</p>",
|
|
1330
1330
|
"exception": true
|
|
1331
1331
|
}
|
|
1332
|
+
},
|
|
1333
|
+
{
|
|
1334
|
+
"op": "add",
|
|
1335
|
+
"path": "/shapes/AuthorizationHeaderMalformed",
|
|
1336
|
+
"value": {
|
|
1337
|
+
"type": "structure",
|
|
1338
|
+
"members": {
|
|
1339
|
+
"Region": {
|
|
1340
|
+
"shape": "BucketRegion"
|
|
1341
|
+
},
|
|
1342
|
+
"HostId": {
|
|
1343
|
+
"shape": "HostId"
|
|
1344
|
+
}
|
|
1345
|
+
},
|
|
1346
|
+
"error": {
|
|
1347
|
+
"httpStatusCode": 400
|
|
1348
|
+
},
|
|
1349
|
+
"documentation": "<p>The authorization header is malformed.</p>",
|
|
1350
|
+
"exception": true
|
|
1351
|
+
}
|
|
1332
1352
|
}
|
|
1333
1353
|
],
|
|
1334
1354
|
"apigatewayv2/2018-11-29/service-2": [
|
|
@@ -1352,5 +1372,43 @@
|
|
|
1352
1372
|
"path": "/operations/CreateApiMapping/http/responseCode",
|
|
1353
1373
|
"value": 200
|
|
1354
1374
|
}
|
|
1375
|
+
],
|
|
1376
|
+
"cloudwatch/2010-08-01/service-2": [
|
|
1377
|
+
{
|
|
1378
|
+
"op": "add",
|
|
1379
|
+
"path": "/metadata/awsQueryCompatible",
|
|
1380
|
+
"value": {}
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
"op": "add",
|
|
1384
|
+
"path": "/metadata/jsonVersion",
|
|
1385
|
+
"value": "1.0"
|
|
1386
|
+
},
|
|
1387
|
+
{
|
|
1388
|
+
"op": "add",
|
|
1389
|
+
"path": "/metadata/targetPrefix",
|
|
1390
|
+
"value": "GraniteServiceVersion20100801"
|
|
1391
|
+
},
|
|
1392
|
+
{
|
|
1393
|
+
"op": "replace",
|
|
1394
|
+
"path": "/metadata/protocol",
|
|
1395
|
+
"value": "smithy-rpc-v2-cbor"
|
|
1396
|
+
},
|
|
1397
|
+
{
|
|
1398
|
+
"op": "replace",
|
|
1399
|
+
"path": "/metadata/protocols",
|
|
1400
|
+
"value": [
|
|
1401
|
+
"smithy-rpc-v2-cbor",
|
|
1402
|
+
"json",
|
|
1403
|
+
"query"
|
|
1404
|
+
]
|
|
1405
|
+
},
|
|
1406
|
+
{
|
|
1407
|
+
"op": "add",
|
|
1408
|
+
"path": "/shapes/ConflictException/error",
|
|
1409
|
+
"value": {
|
|
1410
|
+
"httpStatusCode": 409
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1355
1413
|
]
|
|
1356
1414
|
}
|
localstack/aws/spec.py
CHANGED
|
@@ -4,8 +4,9 @@ import logging
|
|
|
4
4
|
import os
|
|
5
5
|
import sys
|
|
6
6
|
from collections import defaultdict
|
|
7
|
+
from collections.abc import Generator
|
|
7
8
|
from functools import cached_property, lru_cache
|
|
8
|
-
from typing import
|
|
9
|
+
from typing import Literal, NamedTuple
|
|
9
10
|
|
|
10
11
|
import botocore
|
|
11
12
|
import jsonpatch
|
|
@@ -20,7 +21,7 @@ from localstack.utils.objects import singleton_factory
|
|
|
20
21
|
LOG = logging.getLogger(__name__)
|
|
21
22
|
|
|
22
23
|
ServiceName = str
|
|
23
|
-
ProtocolName = Literal["query", "json", "rest-json", "rest-xml", "ec2"]
|
|
24
|
+
ProtocolName = Literal["query", "json", "rest-json", "rest-xml", "ec2", "smithy-rpc-v2-cbor"]
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
class ServiceModelIdentifier(NamedTuple):
|
|
@@ -31,13 +32,14 @@ class ServiceModelIdentifier(NamedTuple):
|
|
|
31
32
|
"""
|
|
32
33
|
|
|
33
34
|
name: ServiceName
|
|
34
|
-
protocol:
|
|
35
|
+
protocol: ProtocolName | None = None
|
|
36
|
+
protocols: tuple[ProtocolName] | None = None
|
|
35
37
|
|
|
36
38
|
|
|
37
39
|
spec_patches_json = os.path.join(os.path.dirname(__file__), "spec-patches.json")
|
|
38
40
|
|
|
39
41
|
|
|
40
|
-
def load_spec_patches() ->
|
|
42
|
+
def load_spec_patches() -> dict[str, list]:
|
|
41
43
|
if not os.path.exists(spec_patches_json):
|
|
42
44
|
return {}
|
|
43
45
|
with open(spec_patches_json) as fd:
|
|
@@ -59,16 +61,16 @@ class PatchingLoader(Loader):
|
|
|
59
61
|
A custom botocore Loader that applies JSON patches from the given json patch file to the specs as they are loaded.
|
|
60
62
|
"""
|
|
61
63
|
|
|
62
|
-
patches:
|
|
64
|
+
patches: dict[str, list]
|
|
63
65
|
|
|
64
|
-
def __init__(self, patches:
|
|
66
|
+
def __init__(self, patches: dict[str, list], *args, **kwargs):
|
|
65
67
|
# add the builtin data path to the extra_search_paths to ensure they are discovered by the loader
|
|
66
68
|
super().__init__(*args, **kwargs)
|
|
67
69
|
self.patches = patches
|
|
68
70
|
|
|
69
71
|
@instance_cache
|
|
70
72
|
def load_data(self, name: str):
|
|
71
|
-
result = super(
|
|
73
|
+
result = super().load_data(name)
|
|
72
74
|
|
|
73
75
|
if patches := self.patches.get(name):
|
|
74
76
|
return jsonpatch.apply_patch(result, patches)
|
|
@@ -94,12 +96,12 @@ class UnknownServiceProtocolError(UnknownServiceError):
|
|
|
94
96
|
fmt = "Unknown service protocol: '{service_name}-{protocol}'."
|
|
95
97
|
|
|
96
98
|
|
|
97
|
-
def list_services() ->
|
|
99
|
+
def list_services() -> list[ServiceModel]:
|
|
98
100
|
return [load_service(service) for service in loader.list_available_services("service-2")]
|
|
99
101
|
|
|
100
102
|
|
|
101
103
|
def load_service(
|
|
102
|
-
service: ServiceName, version:
|
|
104
|
+
service: ServiceName, version: str | None = None, protocol: ProtocolName | None = None
|
|
103
105
|
) -> ServiceModel:
|
|
104
106
|
"""
|
|
105
107
|
Loads a service
|
|
@@ -113,9 +115,13 @@ def load_service(
|
|
|
113
115
|
:raises: UnknownServiceProtocolError if the specific protocol of the service cannot be found
|
|
114
116
|
"""
|
|
115
117
|
service_description = loader.load_service_model(service, "service-2", version)
|
|
118
|
+
service_metadata = service_description.get("metadata", {})
|
|
119
|
+
service_protocols = {service_metadata.get("protocol")}
|
|
120
|
+
if protocols := service_metadata.get("protocols"):
|
|
121
|
+
service_protocols.update(protocols)
|
|
116
122
|
|
|
117
123
|
# check if the protocol is defined, and if so, if the loaded service defines this protocol
|
|
118
|
-
if protocol is not None and protocol
|
|
124
|
+
if protocol is not None and protocol not in service_protocols:
|
|
119
125
|
# if the protocol is defined, but not the one of the currently loaded service,
|
|
120
126
|
# check if we already loaded the custom spec based on the naming convention (<service>-<protocol>),
|
|
121
127
|
# f.e. "sqs-query"
|
|
@@ -131,12 +137,12 @@ def load_service(
|
|
|
131
137
|
|
|
132
138
|
# remove potential protocol names from the service name
|
|
133
139
|
# FIXME add more protocols here if we have to internalize more than just sqs-query
|
|
134
|
-
# TODO this should not contain specific internalized
|
|
140
|
+
# TODO this should not contain specific internalized service names
|
|
135
141
|
service = {"sqs-query": "sqs"}.get(service, service)
|
|
136
142
|
return ServiceModel(service_description, service)
|
|
137
143
|
|
|
138
144
|
|
|
139
|
-
def iterate_service_operations() -> Generator[
|
|
145
|
+
def iterate_service_operations() -> Generator[tuple[ServiceModel, OperationModel], None, None]:
|
|
140
146
|
"""
|
|
141
147
|
Returns one record per operation in the AWS service spec, where the first item is the service model the operation
|
|
142
148
|
belongs to, and the second is the operation model.
|
|
@@ -148,17 +154,38 @@ def iterate_service_operations() -> Generator[Tuple[ServiceModel, OperationModel
|
|
|
148
154
|
yield service, service.operation_model(op_name)
|
|
149
155
|
|
|
150
156
|
|
|
157
|
+
def is_protocol_in_service_model_identifier(
|
|
158
|
+
protocol: ProtocolName, service_model_identifier: ServiceModelIdentifier
|
|
159
|
+
) -> bool:
|
|
160
|
+
"""
|
|
161
|
+
:param protocol: the protocol name to check
|
|
162
|
+
:param service_model_identifier:
|
|
163
|
+
:return: boolean to indicate if the protocol is available for that service
|
|
164
|
+
"""
|
|
165
|
+
protocols = service_model_identifier.protocols or []
|
|
166
|
+
return protocol in protocols or protocol == service_model_identifier.protocol
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
def get_service_model_identifier(service_model: ServiceModel) -> ServiceModelIdentifier:
|
|
170
|
+
protocols = service_model.metadata.get("protocols")
|
|
171
|
+
return ServiceModelIdentifier(
|
|
172
|
+
name=service_model.service_name,
|
|
173
|
+
protocol=service_model.protocol,
|
|
174
|
+
protocols=tuple(protocols) if protocols else None,
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
|
|
151
178
|
@dataclasses.dataclass
|
|
152
179
|
class ServiceCatalogIndex:
|
|
153
180
|
"""
|
|
154
181
|
The ServiceCatalogIndex enables fast lookups for common operations to determine a service from service indicators.
|
|
155
182
|
"""
|
|
156
183
|
|
|
157
|
-
service_names:
|
|
158
|
-
target_prefix_index:
|
|
159
|
-
signing_name_index:
|
|
160
|
-
operations_index:
|
|
161
|
-
endpoint_prefix_index:
|
|
184
|
+
service_names: list[ServiceName]
|
|
185
|
+
target_prefix_index: dict[str, list[ServiceModelIdentifier]]
|
|
186
|
+
signing_name_index: dict[str, list[ServiceModelIdentifier]]
|
|
187
|
+
operations_index: dict[str, list[ServiceModelIdentifier]]
|
|
188
|
+
endpoint_prefix_index: dict[str, list[ServiceModelIdentifier]]
|
|
162
189
|
|
|
163
190
|
|
|
164
191
|
class LazyServiceCatalogIndex:
|
|
@@ -167,58 +194,52 @@ class LazyServiceCatalogIndex:
|
|
|
167
194
|
"""
|
|
168
195
|
|
|
169
196
|
@cached_property
|
|
170
|
-
def service_names(self) ->
|
|
197
|
+
def service_names(self) -> list[ServiceName]:
|
|
171
198
|
return list(self._services.keys())
|
|
172
199
|
|
|
173
200
|
@cached_property
|
|
174
|
-
def target_prefix_index(self) ->
|
|
201
|
+
def target_prefix_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
175
202
|
result = defaultdict(list)
|
|
176
203
|
for service_models in self._services.values():
|
|
177
204
|
for service_model in service_models:
|
|
178
205
|
target_prefix = service_model.metadata.get("targetPrefix")
|
|
179
206
|
if target_prefix:
|
|
180
|
-
result[target_prefix].append(
|
|
181
|
-
ServiceModelIdentifier(service_model.service_name, service_model.protocol)
|
|
182
|
-
)
|
|
207
|
+
result[target_prefix].append(get_service_model_identifier(service_model))
|
|
183
208
|
return dict(result)
|
|
184
209
|
|
|
185
210
|
@cached_property
|
|
186
|
-
def signing_name_index(self) ->
|
|
211
|
+
def signing_name_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
187
212
|
result = defaultdict(list)
|
|
188
213
|
for service_models in self._services.values():
|
|
189
214
|
for service_model in service_models:
|
|
190
215
|
result[service_model.signing_name].append(
|
|
191
|
-
|
|
216
|
+
get_service_model_identifier(service_model)
|
|
192
217
|
)
|
|
193
218
|
return dict(result)
|
|
194
219
|
|
|
195
220
|
@cached_property
|
|
196
|
-
def operations_index(self) ->
|
|
221
|
+
def operations_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
197
222
|
result = defaultdict(list)
|
|
198
223
|
for service_models in self._services.values():
|
|
199
224
|
for service_model in service_models:
|
|
200
225
|
operations = service_model.operation_names
|
|
201
226
|
if operations:
|
|
202
227
|
for operation in operations:
|
|
203
|
-
result[operation].append(
|
|
204
|
-
ServiceModelIdentifier(
|
|
205
|
-
service_model.service_name, service_model.protocol
|
|
206
|
-
)
|
|
207
|
-
)
|
|
228
|
+
result[operation].append(get_service_model_identifier(service_model))
|
|
208
229
|
return dict(result)
|
|
209
230
|
|
|
210
231
|
@cached_property
|
|
211
|
-
def endpoint_prefix_index(self) ->
|
|
232
|
+
def endpoint_prefix_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
212
233
|
result = defaultdict(list)
|
|
213
234
|
for service_models in self._services.values():
|
|
214
235
|
for service_model in service_models:
|
|
215
236
|
result[service_model.endpoint_prefix].append(
|
|
216
|
-
|
|
237
|
+
get_service_model_identifier(service_model)
|
|
217
238
|
)
|
|
218
239
|
return dict(result)
|
|
219
240
|
|
|
220
241
|
@cached_property
|
|
221
|
-
def _services(self) ->
|
|
242
|
+
def _services(self) -> dict[ServiceName, list[ServiceModel]]:
|
|
222
243
|
services = defaultdict(list)
|
|
223
244
|
for service in list_services():
|
|
224
245
|
services[service.service_name].append(service)
|
|
@@ -232,38 +253,36 @@ class ServiceCatalog:
|
|
|
232
253
|
self.index = index or LazyServiceCatalogIndex()
|
|
233
254
|
|
|
234
255
|
@lru_cache(maxsize=512)
|
|
235
|
-
def get(
|
|
236
|
-
self, name: ServiceName, protocol: Optional[ProtocolName] = None
|
|
237
|
-
) -> Optional[ServiceModel]:
|
|
256
|
+
def get(self, name: ServiceName, protocol: ProtocolName | None = None) -> ServiceModel | None:
|
|
238
257
|
return load_service(name, protocol=protocol)
|
|
239
258
|
|
|
240
259
|
@property
|
|
241
|
-
def service_names(self) ->
|
|
260
|
+
def service_names(self) -> list[ServiceName]:
|
|
242
261
|
return self.index.service_names
|
|
243
262
|
|
|
244
263
|
@property
|
|
245
|
-
def target_prefix_index(self) ->
|
|
264
|
+
def target_prefix_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
246
265
|
return self.index.target_prefix_index
|
|
247
266
|
|
|
248
267
|
@property
|
|
249
|
-
def signing_name_index(self) ->
|
|
268
|
+
def signing_name_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
250
269
|
return self.index.signing_name_index
|
|
251
270
|
|
|
252
271
|
@property
|
|
253
|
-
def operations_index(self) ->
|
|
272
|
+
def operations_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
254
273
|
return self.index.operations_index
|
|
255
274
|
|
|
256
275
|
@property
|
|
257
|
-
def endpoint_prefix_index(self) ->
|
|
276
|
+
def endpoint_prefix_index(self) -> dict[str, list[ServiceModelIdentifier]]:
|
|
258
277
|
return self.index.endpoint_prefix_index
|
|
259
278
|
|
|
260
|
-
def by_target_prefix(self, target_prefix: str) ->
|
|
279
|
+
def by_target_prefix(self, target_prefix: str) -> list[ServiceModelIdentifier]:
|
|
261
280
|
return self.target_prefix_index.get(target_prefix, [])
|
|
262
281
|
|
|
263
|
-
def by_signing_name(self, signing_name: str) ->
|
|
282
|
+
def by_signing_name(self, signing_name: str) -> list[ServiceModelIdentifier]:
|
|
264
283
|
return self.signing_name_index.get(signing_name, [])
|
|
265
284
|
|
|
266
|
-
def by_operation(self, operation_name: str) ->
|
|
285
|
+
def by_operation(self, operation_name: str) -> list[ServiceModelIdentifier]:
|
|
267
286
|
return self.operations_index.get(operation_name, [])
|
|
268
287
|
|
|
269
288
|
|
|
@@ -344,8 +363,9 @@ def get_service_catalog() -> ServiceCatalog:
|
|
|
344
363
|
index = build_service_index_cache(cache_catalog_file)
|
|
345
364
|
return ServiceCatalog(index)
|
|
346
365
|
except Exception:
|
|
347
|
-
LOG.
|
|
348
|
-
"error while processing service catalog index cache, falling back to lazy-loaded index"
|
|
366
|
+
LOG.error(
|
|
367
|
+
"error while processing service catalog index cache, falling back to lazy-loaded index",
|
|
368
|
+
exc_info=LOG.isEnabledFor(logging.DEBUG),
|
|
349
369
|
)
|
|
350
370
|
return ServiceCatalog()
|
|
351
371
|
|
localstack/cli/exceptions.py
CHANGED
|
@@ -12,7 +12,7 @@ class CLIError(ClickException):
|
|
|
12
12
|
def format_message(self) -> str:
|
|
13
13
|
return click.style(f"❌ Error: {self.message}", fg="red")
|
|
14
14
|
|
|
15
|
-
def show(self, file: t.
|
|
15
|
+
def show(self, file: t.IO[t.Any] | None = None) -> None:
|
|
16
16
|
if file is None:
|
|
17
17
|
file = get_text_stderr()
|
|
18
18
|
|
localstack/cli/localstack.py
CHANGED
|
@@ -3,7 +3,7 @@ import logging
|
|
|
3
3
|
import os
|
|
4
4
|
import sys
|
|
5
5
|
import traceback
|
|
6
|
-
from typing import
|
|
6
|
+
from typing import TypedDict
|
|
7
7
|
|
|
8
8
|
import click
|
|
9
9
|
import requests
|
|
@@ -47,7 +47,7 @@ class LocalStackCliGroup(click.Group):
|
|
|
47
47
|
|
|
48
48
|
def invoke(self, ctx: click.Context):
|
|
49
49
|
try:
|
|
50
|
-
return super(
|
|
50
|
+
return super().invoke(ctx)
|
|
51
51
|
except click.exceptions.Exit:
|
|
52
52
|
# raise Exit exceptions unmodified (e.g., raised on --help)
|
|
53
53
|
raise
|
|
@@ -320,8 +320,8 @@ class DockerStatus(TypedDict, total=False):
|
|
|
320
320
|
image_tag: str
|
|
321
321
|
image_id: str
|
|
322
322
|
image_created: str
|
|
323
|
-
container_name:
|
|
324
|
-
container_ip:
|
|
323
|
+
container_name: str | None
|
|
324
|
+
container_ip: str | None
|
|
325
325
|
|
|
326
326
|
|
|
327
327
|
def _print_docker_status(format_: str) -> None:
|
|
@@ -405,7 +405,7 @@ def cmd_status_services(format_: str) -> None:
|
|
|
405
405
|
raise CLIError(f"could not connect to LocalStack health endpoint at {url}")
|
|
406
406
|
|
|
407
407
|
|
|
408
|
-
def _print_service_table(services:
|
|
408
|
+
def _print_service_table(services: dict[str, str]) -> None:
|
|
409
409
|
from rich.table import Table
|
|
410
410
|
|
|
411
411
|
status_display = {
|
|
@@ -486,9 +486,9 @@ def cmd_start(
|
|
|
486
486
|
no_banner: bool,
|
|
487
487
|
detached: bool,
|
|
488
488
|
network: str = None,
|
|
489
|
-
env:
|
|
490
|
-
publish:
|
|
491
|
-
volume:
|
|
489
|
+
env: tuple = (),
|
|
490
|
+
publish: tuple = (),
|
|
491
|
+
volume: tuple = (),
|
|
492
492
|
host_dns: bool = False,
|
|
493
493
|
stack: str = None,
|
|
494
494
|
) -> None:
|
|
@@ -602,7 +602,7 @@ def cmd_stop() -> None:
|
|
|
602
602
|
|
|
603
603
|
try:
|
|
604
604
|
DOCKER_CLIENT.stop_container(container_name)
|
|
605
|
-
console.print("container stopped:
|
|
605
|
+
console.print(f"container stopped: {container_name}")
|
|
606
606
|
except NoSuchContainer:
|
|
607
607
|
raise CLIError(
|
|
608
608
|
f'Expected a running LocalStack container named "{container_name}", but found none'
|
|
@@ -699,7 +699,7 @@ def cmd_logs(follow: bool, tail: int) -> None:
|
|
|
699
699
|
metavar="N",
|
|
700
700
|
)
|
|
701
701
|
@publish_invocation
|
|
702
|
-
def cmd_wait(timeout:
|
|
702
|
+
def cmd_wait(timeout: float | None = None) -> None:
|
|
703
703
|
"""
|
|
704
704
|
Wait for the LocalStack runtime to be up and running.
|
|
705
705
|
|
|
@@ -825,7 +825,7 @@ def cmd_update_docker_images() -> None:
|
|
|
825
825
|
update_images(localstack_images)
|
|
826
826
|
|
|
827
827
|
|
|
828
|
-
def update_images(image_list:
|
|
828
|
+
def update_images(image_list: list[str]) -> None:
|
|
829
829
|
from rich.markup import escape
|
|
830
830
|
from rich.progress import MofNCompleteColumn, Progress
|
|
831
831
|
|
localstack/cli/lpm.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import itertools
|
|
2
2
|
import logging
|
|
3
3
|
from multiprocessing.pool import ThreadPool
|
|
4
|
-
from typing import List, Optional
|
|
5
4
|
|
|
6
5
|
import click
|
|
7
6
|
from rich.console import Console
|
|
@@ -74,10 +73,10 @@ def _do_install_package(package: Package, version: str = None, target: InstallTa
|
|
|
74
73
|
help="target of the installation",
|
|
75
74
|
)
|
|
76
75
|
def install(
|
|
77
|
-
package:
|
|
78
|
-
parallel:
|
|
79
|
-
version:
|
|
80
|
-
target:
|
|
76
|
+
package: list[str],
|
|
77
|
+
parallel: int | None = 1,
|
|
78
|
+
version: str | None = None,
|
|
79
|
+
target: str | None = None,
|
|
81
80
|
):
|
|
82
81
|
"""Install one or more packages."""
|
|
83
82
|
try:
|
localstack/cli/plugins.py
CHANGED
localstack/cli/profiles.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import argparse
|
|
2
2
|
import os
|
|
3
3
|
import sys
|
|
4
|
-
from typing import Optional
|
|
5
4
|
|
|
6
5
|
# important: this needs to be free of localstack imports
|
|
7
6
|
|
|
@@ -44,7 +43,7 @@ def set_and_remove_profile_from_sys_argv():
|
|
|
44
43
|
os.environ["CONFIG_PROFILE"] = profile.strip()
|
|
45
44
|
|
|
46
45
|
|
|
47
|
-
def parse_p_argument(args) ->
|
|
46
|
+
def parse_p_argument(args) -> str | None:
|
|
48
47
|
"""
|
|
49
48
|
Lightweight arg parsing to find the first occurrence of ``-p <config>``, or ``-p=<config>`` and return the value of
|
|
50
49
|
``<config>`` from the given arguments.
|