localstack-core 4.7.1.dev139__py3-none-any.whl → 4.10.1.dev7__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.
Files changed (173) hide show
  1. localstack/aws/api/cloudformation/__init__.py +1 -0
  2. localstack/aws/api/cloudwatch/__init__.py +41 -1
  3. localstack/aws/api/config/__init__.py +4 -0
  4. localstack/aws/api/core.py +4 -0
  5. localstack/aws/api/ec2/__init__.py +1113 -56
  6. localstack/aws/api/iam/__init__.py +7 -0
  7. localstack/aws/api/kinesis/__init__.py +19 -0
  8. localstack/aws/api/kms/__init__.py +6 -0
  9. localstack/aws/api/lambda_/__init__.py +13 -0
  10. localstack/aws/api/logs/__init__.py +15 -0
  11. localstack/aws/api/redshift/__init__.py +9 -3
  12. localstack/aws/api/route53/__init__.py +2 -0
  13. localstack/aws/api/s3/__init__.py +12 -0
  14. localstack/aws/api/s3control/__init__.py +32 -0
  15. localstack/aws/api/ssm/__init__.py +2 -0
  16. localstack/aws/client.py +7 -2
  17. localstack/aws/forwarder.py +52 -5
  18. localstack/aws/handlers/analytics.py +1 -1
  19. localstack/aws/handlers/logging.py +12 -2
  20. localstack/aws/handlers/metric_handler.py +41 -1
  21. localstack/aws/handlers/service.py +32 -9
  22. localstack/aws/protocol/parser.py +440 -21
  23. localstack/aws/protocol/serializer.py +684 -64
  24. localstack/aws/protocol/service_router.py +120 -20
  25. localstack/aws/skeleton.py +4 -2
  26. localstack/aws/spec-patches.json +58 -0
  27. localstack/aws/spec.py +33 -13
  28. localstack/cli/exceptions.py +1 -1
  29. localstack/cli/localstack.py +4 -4
  30. localstack/cli/lpm.py +3 -4
  31. localstack/cli/profiles.py +1 -2
  32. localstack/config.py +18 -12
  33. localstack/constants.py +4 -29
  34. localstack/dev/kubernetes/__main__.py +1 -1
  35. localstack/dev/run/paths.py +1 -1
  36. localstack/dns/plugins.py +5 -1
  37. localstack/dns/server.py +12 -3
  38. localstack/packages/api.py +9 -8
  39. localstack/packages/core.py +2 -2
  40. localstack/packages/plugins.py +0 -8
  41. localstack/runtime/init.py +1 -1
  42. localstack/services/apigateway/legacy/provider.py +53 -3
  43. localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +3 -0
  44. localstack/services/apigateway/next_gen/execute_api/integrations/http.py +3 -3
  45. localstack/services/apigateway/next_gen/execute_api/test_invoke.py +50 -6
  46. localstack/services/apigateway/next_gen/provider.py +5 -0
  47. localstack/services/cloudformation/engine/entities.py +12 -1
  48. localstack/services/cloudformation/engine/v2/change_set_model.py +0 -3
  49. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +14 -0
  50. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +13 -15
  51. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +118 -24
  52. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +4 -1
  53. localstack/services/cloudformation/engine/v2/change_set_model_validator.py +5 -14
  54. localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +1 -0
  55. localstack/services/cloudformation/engine/v2/resolving.py +6 -4
  56. localstack/services/cloudformation/engine/yaml_parser.py +9 -2
  57. localstack/services/cloudformation/resource_provider.py +5 -1
  58. localstack/services/cloudformation/resources.py +24149 -0
  59. localstack/services/cloudformation/v2/entities.py +6 -3
  60. localstack/services/cloudformation/v2/provider.py +172 -27
  61. localstack/services/cloudformation/v2/types.py +8 -4
  62. localstack/services/cloudwatch/provider_v2.py +25 -28
  63. localstack/services/dynamodb/packages.py +2 -1
  64. localstack/services/dynamodb/provider.py +42 -0
  65. localstack/services/dynamodb/v2/provider.py +42 -0
  66. localstack/services/ecr/resource_providers/aws_ecr_repository.py +5 -2
  67. localstack/services/es/provider.py +2 -2
  68. localstack/services/events/event_rule_engine.py +31 -13
  69. localstack/services/events/models.py +4 -5
  70. localstack/services/events/target.py +17 -9
  71. localstack/services/iam/provider.py +11 -116
  72. localstack/services/iam/resources/policy_simulator.py +133 -0
  73. localstack/services/kinesis/models.py +15 -2
  74. localstack/services/kinesis/provider.py +77 -0
  75. localstack/services/kms/provider.py +14 -5
  76. localstack/services/lambda_/invocation/internal_sqs_queue.py +5 -9
  77. localstack/services/lambda_/packages.py +1 -1
  78. localstack/services/logs/provider.py +1 -1
  79. localstack/services/moto.py +2 -1
  80. localstack/services/opensearch/cluster.py +15 -7
  81. localstack/services/opensearch/packages.py +26 -7
  82. localstack/services/opensearch/provider.py +6 -1
  83. localstack/services/opensearch/versions.py +56 -7
  84. localstack/services/s3/constants.py +5 -2
  85. localstack/services/s3/cors.py +4 -4
  86. localstack/services/s3/notifications.py +1 -1
  87. localstack/services/s3/presigned_url.py +27 -43
  88. localstack/services/s3/provider.py +67 -11
  89. localstack/services/s3/utils.py +42 -11
  90. localstack/services/ses/provider.py +16 -7
  91. localstack/services/sns/constants.py +7 -1
  92. localstack/services/sns/v2/models.py +167 -0
  93. localstack/services/sns/v2/provider.py +860 -2
  94. localstack/services/sns/v2/utils.py +130 -0
  95. localstack/services/sqs/developer_api.py +205 -0
  96. localstack/services/sqs/models.py +42 -3
  97. localstack/services/sqs/provider.py +8 -309
  98. localstack/services/sqs/query_api.py +1 -1
  99. localstack/services/sqs/utils.py +121 -2
  100. localstack/services/stepfunctions/asl/jsonata/jsonata.py +1 -1
  101. localstack/testing/aws/cloudformation_utils.py +1 -1
  102. localstack/testing/pytest/cloudformation/fixtures.py +3 -3
  103. localstack/testing/pytest/container.py +4 -5
  104. localstack/testing/pytest/fixtures.py +20 -19
  105. localstack/testing/pytest/in_memory_localstack.py +0 -4
  106. localstack/testing/pytest/marking.py +13 -4
  107. localstack/testing/pytest/stepfunctions/utils.py +4 -3
  108. localstack/testing/pytest/util.py +1 -1
  109. localstack/testing/pytest/validation_tracking.py +1 -2
  110. localstack/testing/snapshots/transformer_utility.py +5 -0
  111. localstack/utils/analytics/events.py +2 -2
  112. localstack/utils/analytics/metadata.py +1 -2
  113. localstack/utils/analytics/metrics/counter.py +6 -8
  114. localstack/utils/analytics/publisher.py +1 -2
  115. localstack/utils/analytics/service_request_aggregator.py +2 -2
  116. localstack/utils/archives.py +11 -11
  117. localstack/utils/aws/arns.py +17 -9
  118. localstack/utils/aws/aws_responses.py +7 -7
  119. localstack/utils/aws/aws_stack.py +2 -3
  120. localstack/utils/aws/message_forwarding.py +1 -2
  121. localstack/utils/aws/request_context.py +4 -5
  122. localstack/utils/batch_policy.py +3 -3
  123. localstack/utils/bootstrap.py +7 -7
  124. localstack/utils/catalog/catalog.py +139 -0
  125. localstack/utils/catalog/catalog_loader.py +11 -0
  126. localstack/utils/catalog/common.py +58 -0
  127. localstack/utils/catalog/plugins.py +28 -0
  128. localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
  129. localstack/utils/collections.py +7 -8
  130. localstack/utils/config_listener.py +1 -1
  131. localstack/utils/container_networking.py +2 -3
  132. localstack/utils/container_utils/container_client.py +115 -131
  133. localstack/utils/container_utils/docker_cmd_client.py +42 -42
  134. localstack/utils/container_utils/docker_sdk_client.py +63 -62
  135. localstack/utils/diagnose.py +2 -3
  136. localstack/utils/docker_utils.py +3 -4
  137. localstack/utils/files.py +31 -7
  138. localstack/utils/functions.py +3 -2
  139. localstack/utils/http.py +4 -5
  140. localstack/utils/json.py +19 -5
  141. localstack/utils/kinesis/kinesis_connector.py +2 -1
  142. localstack/utils/net.py +6 -6
  143. localstack/utils/no_exit_argument_parser.py +2 -2
  144. localstack/utils/numbers.py +9 -2
  145. localstack/utils/objects.py +6 -5
  146. localstack/utils/patch.py +2 -1
  147. localstack/utils/run.py +10 -9
  148. localstack/utils/scheduler.py +11 -11
  149. localstack/utils/server/tcp_proxy.py +2 -2
  150. localstack/utils/serving.py +2 -3
  151. localstack/utils/strings.py +10 -11
  152. localstack/utils/sync.py +126 -1
  153. localstack/utils/tagging.py +1 -4
  154. localstack/utils/testutil.py +5 -4
  155. localstack/utils/threads.py +2 -2
  156. localstack/utils/time.py +11 -3
  157. localstack/utils/urls.py +1 -3
  158. localstack/version.py +2 -2
  159. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/METADATA +17 -12
  160. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/RECORD +168 -164
  161. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/entry_points.txt +4 -2
  162. localstack_core-4.10.1.dev7.dist-info/plux.json +1 -0
  163. localstack/packages/terraform.py +0 -46
  164. localstack/services/cloudformation/deploy.html +0 -144
  165. localstack/services/cloudformation/deploy_ui.py +0 -47
  166. localstack/services/cloudformation/plugins.py +0 -12
  167. localstack_core-4.7.1.dev139.dist-info/plux.json +0 -1
  168. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev7.data}/scripts/localstack +0 -0
  169. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev7.data}/scripts/localstack-supervisor +0 -0
  170. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev7.data}/scripts/localstack.bat +0 -0
  171. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/WHEEL +0 -0
  172. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/licenses/LICENSE.txt +0 -0
  173. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev7.dist-info}/top_level.txt +0 -0
@@ -722,6 +722,7 @@ class WarningType(StrEnum):
722
722
  UNSUPPORTED_PROPERTIES = "UNSUPPORTED_PROPERTIES"
723
723
  MUTUALLY_EXCLUSIVE_TYPES = "MUTUALLY_EXCLUSIVE_TYPES"
724
724
  EXCLUDED_PROPERTIES = "EXCLUDED_PROPERTIES"
725
+ EXCLUDED_RESOURCES = "EXCLUDED_RESOURCES"
725
726
 
726
727
 
727
728
  class AlreadyExistsException(ServiceException):
@@ -16,7 +16,10 @@ AlarmRule = str
16
16
  AmazonResourceName = str
17
17
  AnomalyDetectorMetricStat = str
18
18
  AnomalyDetectorMetricTimezone = str
19
+ AttributeName = str
20
+ AttributeValue = str
19
21
  AwsQueryErrorMessage = str
22
+ ContributorId = str
20
23
  DashboardArn = str
21
24
  DashboardBody = str
22
25
  DashboardErrorMessage = str
@@ -136,6 +139,8 @@ class HistoryItemType(StrEnum):
136
139
  ConfigurationUpdate = "ConfigurationUpdate"
137
140
  StateUpdate = "StateUpdate"
138
141
  Action = "Action"
142
+ AlarmContributorStateUpdate = "AlarmContributorStateUpdate"
143
+ AlarmContributorAction = "AlarmContributorAction"
139
144
 
140
145
 
141
146
  class MetricStreamOutputFormat(StrEnum):
@@ -213,7 +218,7 @@ class ConcurrentModificationException(ServiceException):
213
218
  class ConflictException(ServiceException):
214
219
  code: str = "ConflictException"
215
220
  sender_fault: bool = False
216
- status_code: int = 400
221
+ status_code: int = 409
217
222
 
218
223
 
219
224
  class DashboardValidationMessage(TypedDict, total=False):
@@ -300,15 +305,28 @@ class ResourceNotFoundException(ServiceException):
300
305
 
301
306
 
302
307
  Timestamp = datetime
308
+ ContributorAttributes = Dict[AttributeName, AttributeValue]
309
+
310
+
311
+ class AlarmContributor(TypedDict, total=False):
312
+ ContributorId: ContributorId
313
+ ContributorAttributes: ContributorAttributes
314
+ StateReason: StateReason
315
+ StateTransitionedTimestamp: Optional[Timestamp]
316
+
317
+
318
+ AlarmContributors = List[AlarmContributor]
303
319
 
304
320
 
305
321
  class AlarmHistoryItem(TypedDict, total=False):
306
322
  AlarmName: Optional[AlarmName]
323
+ AlarmContributorId: Optional[ContributorId]
307
324
  AlarmType: Optional[AlarmType]
308
325
  Timestamp: Optional[Timestamp]
309
326
  HistoryItemType: Optional[HistoryItemType]
310
327
  HistorySummary: Optional[HistorySummary]
311
328
  HistoryData: Optional[HistoryData]
329
+ AlarmContributorAttributes: Optional[ContributorAttributes]
312
330
 
313
331
 
314
332
  AlarmHistoryItems = List[AlarmHistoryItem]
@@ -505,8 +523,19 @@ class DeleteMetricStreamOutput(TypedDict, total=False):
505
523
  pass
506
524
 
507
525
 
526
+ class DescribeAlarmContributorsInput(ServiceRequest):
527
+ AlarmName: AlarmName
528
+ NextToken: Optional[NextToken]
529
+
530
+
531
+ class DescribeAlarmContributorsOutput(TypedDict, total=False):
532
+ AlarmContributors: AlarmContributors
533
+ NextToken: Optional[NextToken]
534
+
535
+
508
536
  class DescribeAlarmHistoryInput(ServiceRequest):
509
537
  AlarmName: Optional[AlarmName]
538
+ AlarmContributorId: Optional[ContributorId]
510
539
  AlarmTypes: Optional[AlarmTypes]
511
540
  HistoryItemType: Optional[HistoryItemType]
512
541
  StartDate: Optional[Timestamp]
@@ -1179,11 +1208,22 @@ class CloudwatchApi:
1179
1208
  ) -> DeleteMetricStreamOutput:
1180
1209
  raise NotImplementedError
1181
1210
 
1211
+ @handler("DescribeAlarmContributors")
1212
+ def describe_alarm_contributors(
1213
+ self,
1214
+ context: RequestContext,
1215
+ alarm_name: AlarmName,
1216
+ next_token: NextToken | None = None,
1217
+ **kwargs,
1218
+ ) -> DescribeAlarmContributorsOutput:
1219
+ raise NotImplementedError
1220
+
1182
1221
  @handler("DescribeAlarmHistory")
1183
1222
  def describe_alarm_history(
1184
1223
  self,
1185
1224
  context: RequestContext,
1186
1225
  alarm_name: AlarmName | None = None,
1226
+ alarm_contributor_id: ContributorId | None = None,
1187
1227
  alarm_types: AlarmTypes | None = None,
1188
1228
  history_item_type: HistoryItemType | None = None,
1189
1229
  start_date: Timestamp | None = None,
@@ -291,12 +291,16 @@ class RemediationExecutionState(StrEnum):
291
291
  IN_PROGRESS = "IN_PROGRESS"
292
292
  SUCCEEDED = "SUCCEEDED"
293
293
  FAILED = "FAILED"
294
+ UNKNOWN = "UNKNOWN"
294
295
 
295
296
 
296
297
  class RemediationExecutionStepState(StrEnum):
297
298
  SUCCEEDED = "SUCCEEDED"
298
299
  PENDING = "PENDING"
299
300
  FAILED = "FAILED"
301
+ IN_PROGRESS = "IN_PROGRESS"
302
+ EXITED = "EXITED"
303
+ UNKNOWN = "UNKNOWN"
300
304
 
301
305
 
302
306
  class RemediationTargetType(StrEnum):
@@ -13,6 +13,7 @@ from botocore.model import OperationModel, ServiceModel
13
13
  from rolo.gateway import RequestContext as RoloRequestContext
14
14
 
15
15
  from localstack.aws.connect import InternalRequestParameters
16
+ from localstack.aws.spec import ProtocolName
16
17
  from localstack.http import Request, Response
17
18
  from localstack.utils.strings import long_uid
18
19
 
@@ -88,6 +89,8 @@ class RequestContext(RoloRequestContext):
88
89
  """The underlying incoming HTTP request."""
89
90
  service: ServiceModel | None
90
91
  """The botocore ServiceModel of the service the request is made to."""
92
+ protocol: ProtocolName | None
93
+ """The botocore Protocol for the service the request is made to."""
91
94
  operation: OperationModel | None
92
95
  """The botocore OperationModel of the AWS operation being invoked."""
93
96
  region: str
@@ -112,6 +115,7 @@ class RequestContext(RoloRequestContext):
112
115
  def __init__(self, request: Request):
113
116
  super().__init__(request)
114
117
  self.service = None
118
+ self.protocol = None
115
119
  self.operation = None
116
120
  self.region = None # type: ignore[assignment] # type=str, because we know it will always be set downstream
117
121
  self.partition = "aws" # Sensible default - will be overwritten by region-handler