localstack-core 4.7.1.dev139__py3-none-any.whl → 4.10.1.dev42__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.

Potentially problematic release.


This version of localstack-core might be problematic. Click here for more details.

Files changed (208) hide show
  1. localstack/aws/api/acm/__init__.py +122 -122
  2. localstack/aws/api/apigateway/__init__.py +560 -559
  3. localstack/aws/api/cloudcontrol/__init__.py +63 -63
  4. localstack/aws/api/cloudformation/__init__.py +1041 -969
  5. localstack/aws/api/cloudwatch/__init__.py +408 -368
  6. localstack/aws/api/config/__init__.py +788 -786
  7. localstack/aws/api/core.py +4 -0
  8. localstack/aws/api/dynamodb/__init__.py +753 -759
  9. localstack/aws/api/dynamodbstreams/__init__.py +74 -74
  10. localstack/aws/api/ec2/__init__.py +9713 -8573
  11. localstack/aws/api/es/__init__.py +453 -453
  12. localstack/aws/api/events/__init__.py +552 -552
  13. localstack/aws/api/firehose/__init__.py +541 -543
  14. localstack/aws/api/iam/__init__.py +646 -572
  15. localstack/aws/api/kinesis/__init__.py +251 -144
  16. localstack/aws/api/kms/__init__.py +343 -333
  17. localstack/aws/api/lambda_/__init__.py +585 -571
  18. localstack/aws/api/logs/__init__.py +682 -666
  19. localstack/aws/api/opensearch/__init__.py +814 -785
  20. localstack/aws/api/pipes/__init__.py +336 -336
  21. localstack/aws/api/redshift/__init__.py +1192 -1164
  22. localstack/aws/api/resource_groups/__init__.py +175 -175
  23. localstack/aws/api/resourcegroupstaggingapi/__init__.py +67 -67
  24. localstack/aws/api/route53/__init__.py +256 -254
  25. localstack/aws/api/route53resolver/__init__.py +396 -396
  26. localstack/aws/api/s3/__init__.py +1358 -1345
  27. localstack/aws/api/s3control/__init__.py +616 -584
  28. localstack/aws/api/scheduler/__init__.py +118 -118
  29. localstack/aws/api/secretsmanager/__init__.py +193 -193
  30. localstack/aws/api/ses/__init__.py +227 -227
  31. localstack/aws/api/sns/__init__.py +115 -115
  32. localstack/aws/api/sqs/__init__.py +100 -100
  33. localstack/aws/api/ssm/__init__.py +1978 -1970
  34. localstack/aws/api/stepfunctions/__init__.py +323 -323
  35. localstack/aws/api/sts/__init__.py +90 -66
  36. localstack/aws/api/support/__init__.py +112 -112
  37. localstack/aws/api/swf/__init__.py +378 -386
  38. localstack/aws/api/transcribe/__init__.py +425 -425
  39. localstack/aws/client.py +7 -2
  40. localstack/aws/forwarder.py +52 -5
  41. localstack/aws/handlers/analytics.py +1 -1
  42. localstack/aws/handlers/logging.py +12 -2
  43. localstack/aws/handlers/metric_handler.py +41 -1
  44. localstack/aws/handlers/service.py +43 -10
  45. localstack/aws/protocol/parser.py +440 -21
  46. localstack/aws/protocol/serializer.py +684 -64
  47. localstack/aws/protocol/service_router.py +120 -20
  48. localstack/aws/scaffold.py +15 -17
  49. localstack/aws/skeleton.py +4 -2
  50. localstack/aws/spec-patches.json +58 -0
  51. localstack/aws/spec.py +33 -13
  52. localstack/cli/exceptions.py +1 -1
  53. localstack/cli/localstack.py +10 -5
  54. localstack/cli/lpm.py +3 -4
  55. localstack/cli/profiles.py +1 -2
  56. localstack/config.py +18 -12
  57. localstack/constants.py +4 -29
  58. localstack/dev/kubernetes/__main__.py +39 -4
  59. localstack/dev/run/paths.py +1 -1
  60. localstack/dns/plugins.py +5 -1
  61. localstack/dns/server.py +12 -3
  62. localstack/packages/api.py +9 -8
  63. localstack/packages/core.py +2 -2
  64. localstack/packages/plugins.py +0 -8
  65. localstack/runtime/init.py +1 -1
  66. localstack/services/apigateway/helpers.py +5 -9
  67. localstack/services/apigateway/legacy/provider.py +85 -12
  68. localstack/services/apigateway/next_gen/execute_api/integrations/aws.py +3 -0
  69. localstack/services/apigateway/next_gen/execute_api/integrations/http.py +3 -3
  70. localstack/services/apigateway/next_gen/execute_api/test_invoke.py +50 -6
  71. localstack/services/apigateway/next_gen/provider.py +5 -0
  72. localstack/services/apigateway/patches.py +0 -9
  73. localstack/services/cloudformation/engine/entities.py +12 -1
  74. localstack/services/cloudformation/engine/v2/change_set_model.py +0 -3
  75. localstack/services/cloudformation/engine/v2/change_set_model_describer.py +14 -0
  76. localstack/services/cloudformation/engine/v2/change_set_model_executor.py +13 -15
  77. localstack/services/cloudformation/engine/v2/change_set_model_preproc.py +118 -24
  78. localstack/services/cloudformation/engine/v2/change_set_model_transform.py +4 -1
  79. localstack/services/cloudformation/engine/v2/change_set_model_validator.py +5 -14
  80. localstack/services/cloudformation/engine/v2/change_set_model_visitor.py +1 -0
  81. localstack/services/cloudformation/engine/v2/resolving.py +6 -4
  82. localstack/services/cloudformation/engine/yaml_parser.py +9 -2
  83. localstack/services/cloudformation/provider.py +2 -2
  84. localstack/services/cloudformation/resource_provider.py +5 -1
  85. localstack/services/cloudformation/resources.py +24149 -0
  86. localstack/services/cloudformation/v2/entities.py +6 -3
  87. localstack/services/cloudformation/v2/provider.py +178 -33
  88. localstack/services/cloudformation/v2/types.py +8 -4
  89. localstack/services/cloudwatch/provider_v2.py +25 -28
  90. localstack/services/dynamodb/packages.py +2 -1
  91. localstack/services/dynamodb/provider.py +42 -0
  92. localstack/services/dynamodb/v2/provider.py +42 -0
  93. localstack/services/ecr/resource_providers/aws_ecr_repository.py +5 -2
  94. localstack/services/es/provider.py +2 -2
  95. localstack/services/events/event_rule_engine.py +31 -13
  96. localstack/services/events/models.py +4 -5
  97. localstack/services/events/target.py +17 -9
  98. localstack/services/iam/provider.py +11 -116
  99. localstack/services/iam/resources/policy_simulator.py +133 -0
  100. localstack/services/kinesis/models.py +15 -2
  101. localstack/services/kinesis/packages.py +1 -1
  102. localstack/services/kinesis/provider.py +77 -0
  103. localstack/services/kms/models.py +34 -4
  104. localstack/services/kms/provider.py +107 -21
  105. localstack/services/lambda_/api_utils.py +3 -1
  106. localstack/services/lambda_/invocation/internal_sqs_queue.py +5 -9
  107. localstack/services/lambda_/packages.py +1 -1
  108. localstack/services/lambda_/provider.py +1 -1
  109. localstack/services/lambda_/runtimes.py +8 -3
  110. localstack/services/logs/provider.py +36 -19
  111. localstack/services/moto.py +2 -1
  112. localstack/services/opensearch/cluster.py +15 -7
  113. localstack/services/opensearch/packages.py +26 -7
  114. localstack/services/opensearch/provider.py +6 -1
  115. localstack/services/opensearch/versions.py +56 -7
  116. localstack/services/s3/constants.py +5 -2
  117. localstack/services/s3/cors.py +4 -4
  118. localstack/services/s3/notifications.py +1 -1
  119. localstack/services/s3/presigned_url.py +27 -43
  120. localstack/services/s3/provider.py +68 -12
  121. localstack/services/s3/utils.py +42 -11
  122. localstack/services/ses/provider.py +16 -7
  123. localstack/services/sns/constants.py +7 -1
  124. localstack/services/sns/v2/models.py +190 -0
  125. localstack/services/sns/v2/provider.py +992 -2
  126. localstack/services/sns/v2/utils.py +138 -0
  127. localstack/services/sqs/developer_api.py +205 -0
  128. localstack/services/sqs/models.py +79 -13
  129. localstack/services/sqs/provider.py +8 -309
  130. localstack/services/sqs/query_api.py +1 -1
  131. localstack/services/sqs/utils.py +121 -2
  132. localstack/services/stepfunctions/asl/jsonata/jsonata.py +1 -1
  133. localstack/testing/aws/cloudformation_utils.py +1 -1
  134. localstack/testing/pytest/cloudformation/fixtures.py +3 -3
  135. localstack/testing/pytest/container.py +4 -5
  136. localstack/testing/pytest/fixtures.py +20 -19
  137. localstack/testing/pytest/in_memory_localstack.py +0 -4
  138. localstack/testing/pytest/marking.py +13 -4
  139. localstack/testing/pytest/stepfunctions/utils.py +4 -3
  140. localstack/testing/pytest/util.py +1 -1
  141. localstack/testing/pytest/validation_tracking.py +1 -2
  142. localstack/testing/snapshots/transformer_utility.py +7 -0
  143. localstack/testing/testselection/matching.py +0 -1
  144. localstack/utils/analytics/events.py +2 -2
  145. localstack/utils/analytics/metadata.py +1 -2
  146. localstack/utils/analytics/metrics/counter.py +6 -8
  147. localstack/utils/analytics/publisher.py +1 -2
  148. localstack/utils/analytics/service_request_aggregator.py +2 -2
  149. localstack/utils/archives.py +11 -11
  150. localstack/utils/aws/arns.py +17 -9
  151. localstack/utils/aws/aws_responses.py +7 -7
  152. localstack/utils/aws/aws_stack.py +2 -3
  153. localstack/utils/aws/client_types.py +0 -8
  154. localstack/utils/aws/message_forwarding.py +1 -2
  155. localstack/utils/aws/request_context.py +4 -5
  156. localstack/utils/batch_policy.py +3 -3
  157. localstack/utils/bootstrap.py +7 -7
  158. localstack/utils/catalog/catalog.py +139 -0
  159. localstack/utils/catalog/catalog_loader.py +119 -0
  160. localstack/utils/catalog/common.py +58 -0
  161. localstack/utils/catalog/plugins.py +28 -0
  162. localstack/utils/cloudwatch/cloudwatch_util.py +5 -5
  163. localstack/utils/collections.py +7 -8
  164. localstack/utils/config_listener.py +1 -1
  165. localstack/utils/container_networking.py +2 -3
  166. localstack/utils/container_utils/container_client.py +115 -131
  167. localstack/utils/container_utils/docker_cmd_client.py +42 -42
  168. localstack/utils/container_utils/docker_sdk_client.py +63 -62
  169. localstack/utils/crypto.py +109 -0
  170. localstack/utils/diagnose.py +2 -3
  171. localstack/utils/docker_utils.py +3 -4
  172. localstack/utils/files.py +31 -7
  173. localstack/utils/functions.py +3 -2
  174. localstack/utils/http.py +4 -5
  175. localstack/utils/json.py +19 -5
  176. localstack/utils/kinesis/kinesis_connector.py +2 -1
  177. localstack/utils/net.py +6 -6
  178. localstack/utils/no_exit_argument_parser.py +2 -2
  179. localstack/utils/numbers.py +9 -2
  180. localstack/utils/objects.py +6 -5
  181. localstack/utils/patch.py +2 -1
  182. localstack/utils/run.py +10 -9
  183. localstack/utils/scheduler.py +11 -11
  184. localstack/utils/server/tcp_proxy.py +2 -2
  185. localstack/utils/serving.py +2 -3
  186. localstack/utils/strings.py +10 -11
  187. localstack/utils/sync.py +126 -1
  188. localstack/utils/tagging.py +1 -4
  189. localstack/utils/testutil.py +5 -4
  190. localstack/utils/threads.py +2 -2
  191. localstack/utils/time.py +11 -3
  192. localstack/utils/urls.py +1 -3
  193. localstack/version.py +2 -2
  194. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/METADATA +19 -13
  195. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/RECORD +203 -199
  196. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/entry_points.txt +4 -2
  197. localstack_core-4.10.1.dev42.dist-info/plux.json +1 -0
  198. localstack/packages/terraform.py +0 -46
  199. localstack/services/cloudformation/deploy.html +0 -144
  200. localstack/services/cloudformation/deploy_ui.py +0 -47
  201. localstack/services/cloudformation/plugins.py +0 -12
  202. localstack_core-4.7.1.dev139.dist-info/plux.json +0 -1
  203. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev42.data}/scripts/localstack +0 -0
  204. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev42.data}/scripts/localstack-supervisor +0 -0
  205. {localstack_core-4.7.1.dev139.data → localstack_core-4.10.1.dev42.data}/scripts/localstack.bat +0 -0
  206. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/WHEEL +0 -0
  207. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/licenses/LICENSE.txt +0 -0
  208. {localstack_core-4.7.1.dev139.dist-info → localstack_core-4.10.1.dev42.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
  from enum import StrEnum
3
- from typing import Dict, List, Optional, TypedDict
3
+ from typing import TypedDict
4
4
 
5
5
  from localstack.aws.api import RequestContext, ServiceException, ServiceRequest, handler
6
6
 
@@ -87,52 +87,52 @@ class TrimmedDataAccessException(ServiceException):
87
87
 
88
88
 
89
89
  class AttributeValue(TypedDict, total=False):
90
- S: Optional["StringAttributeValue"]
91
- N: Optional["NumberAttributeValue"]
92
- B: Optional["BinaryAttributeValue"]
93
- SS: Optional["StringSetAttributeValue"]
94
- NS: Optional["NumberSetAttributeValue"]
95
- BS: Optional["BinarySetAttributeValue"]
96
- M: Optional["MapAttributeValue"]
97
- L: Optional["ListAttributeValue"]
98
- NULL: Optional["NullAttributeValue"]
99
- BOOL: Optional["BooleanAttributeValue"]
100
-
101
-
102
- ListAttributeValue = List[AttributeValue]
103
- MapAttributeValue = Dict[AttributeName, AttributeValue]
90
+ S: "StringAttributeValue | None"
91
+ N: "NumberAttributeValue | None"
92
+ B: "BinaryAttributeValue | None"
93
+ SS: "StringSetAttributeValue | None"
94
+ NS: "NumberSetAttributeValue | None"
95
+ BS: "BinarySetAttributeValue | None"
96
+ M: "MapAttributeValue | None"
97
+ L: "ListAttributeValue | None"
98
+ NULL: "NullAttributeValue | None"
99
+ BOOL: "BooleanAttributeValue | None"
100
+
101
+
102
+ ListAttributeValue = list[AttributeValue]
103
+ MapAttributeValue = dict[AttributeName, AttributeValue]
104
104
  BinaryAttributeValue = bytes
105
- BinarySetAttributeValue = List[BinaryAttributeValue]
106
- NumberSetAttributeValue = List[NumberAttributeValue]
107
- StringSetAttributeValue = List[StringAttributeValue]
108
- AttributeMap = Dict[AttributeName, AttributeValue]
105
+ BinarySetAttributeValue = list[BinaryAttributeValue]
106
+ NumberSetAttributeValue = list[NumberAttributeValue]
107
+ StringSetAttributeValue = list[StringAttributeValue]
108
+ AttributeMap = dict[AttributeName, AttributeValue]
109
109
  Date = datetime
110
110
 
111
111
 
112
112
  class ShardFilter(TypedDict, total=False):
113
- Type: Optional[ShardFilterType]
114
- ShardId: Optional[ShardId]
113
+ Type: ShardFilterType | None
114
+ ShardId: ShardId | None
115
115
 
116
116
 
117
117
  class DescribeStreamInput(ServiceRequest):
118
118
  StreamArn: StreamArn
119
- Limit: Optional[PositiveIntegerObject]
120
- ExclusiveStartShardId: Optional[ShardId]
121
- ShardFilter: Optional[ShardFilter]
119
+ Limit: PositiveIntegerObject | None
120
+ ExclusiveStartShardId: ShardId | None
121
+ ShardFilter: ShardFilter | None
122
122
 
123
123
 
124
124
  class SequenceNumberRange(TypedDict, total=False):
125
- StartingSequenceNumber: Optional[SequenceNumber]
126
- EndingSequenceNumber: Optional[SequenceNumber]
125
+ StartingSequenceNumber: SequenceNumber | None
126
+ EndingSequenceNumber: SequenceNumber | None
127
127
 
128
128
 
129
129
  class Shard(TypedDict, total=False):
130
- ShardId: Optional[ShardId]
131
- SequenceNumberRange: Optional[SequenceNumberRange]
132
- ParentShardId: Optional[ShardId]
130
+ ShardId: ShardId | None
131
+ SequenceNumberRange: SequenceNumberRange | None
132
+ ParentShardId: ShardId | None
133
133
 
134
134
 
135
- ShardDescriptionList = List[Shard]
135
+ ShardDescriptionList = list[Shard]
136
136
 
137
137
 
138
138
  class KeySchemaElement(TypedDict, total=False):
@@ -140,100 +140,100 @@ class KeySchemaElement(TypedDict, total=False):
140
140
  KeyType: KeyType
141
141
 
142
142
 
143
- KeySchema = List[KeySchemaElement]
143
+ KeySchema = list[KeySchemaElement]
144
144
 
145
145
 
146
146
  class StreamDescription(TypedDict, total=False):
147
- StreamArn: Optional[StreamArn]
148
- StreamLabel: Optional[String]
149
- StreamStatus: Optional[StreamStatus]
150
- StreamViewType: Optional[StreamViewType]
151
- CreationRequestDateTime: Optional[Date]
152
- TableName: Optional[TableName]
153
- KeySchema: Optional[KeySchema]
154
- Shards: Optional[ShardDescriptionList]
155
- LastEvaluatedShardId: Optional[ShardId]
147
+ StreamArn: StreamArn | None
148
+ StreamLabel: String | None
149
+ StreamStatus: StreamStatus | None
150
+ StreamViewType: StreamViewType | None
151
+ CreationRequestDateTime: Date | None
152
+ TableName: TableName | None
153
+ KeySchema: KeySchema | None
154
+ Shards: ShardDescriptionList | None
155
+ LastEvaluatedShardId: ShardId | None
156
156
 
157
157
 
158
158
  class DescribeStreamOutput(TypedDict, total=False):
159
- StreamDescription: Optional[StreamDescription]
159
+ StreamDescription: StreamDescription | None
160
160
 
161
161
 
162
162
  class GetRecordsInput(ServiceRequest):
163
163
  ShardIterator: ShardIterator
164
- Limit: Optional[PositiveIntegerObject]
164
+ Limit: PositiveIntegerObject | None
165
165
 
166
166
 
167
167
  class Identity(TypedDict, total=False):
168
- PrincipalId: Optional[String]
169
- Type: Optional[String]
168
+ PrincipalId: String | None
169
+ Type: String | None
170
170
 
171
171
 
172
172
  PositiveLongObject = int
173
173
 
174
174
 
175
175
  class StreamRecord(TypedDict, total=False):
176
- ApproximateCreationDateTime: Optional[Date]
177
- Keys: Optional[AttributeMap]
178
- NewImage: Optional[AttributeMap]
179
- OldImage: Optional[AttributeMap]
180
- SequenceNumber: Optional[SequenceNumber]
181
- SizeBytes: Optional[PositiveLongObject]
182
- StreamViewType: Optional[StreamViewType]
176
+ ApproximateCreationDateTime: Date | None
177
+ Keys: AttributeMap | None
178
+ NewImage: AttributeMap | None
179
+ OldImage: AttributeMap | None
180
+ SequenceNumber: SequenceNumber | None
181
+ SizeBytes: PositiveLongObject | None
182
+ StreamViewType: StreamViewType | None
183
183
 
184
184
 
185
185
  class Record(TypedDict, total=False):
186
- eventID: Optional[String]
187
- eventName: Optional[OperationType]
188
- eventVersion: Optional[String]
189
- eventSource: Optional[String]
190
- awsRegion: Optional[String]
191
- dynamodb: Optional[StreamRecord]
192
- userIdentity: Optional[Identity]
186
+ eventID: String | None
187
+ eventName: OperationType | None
188
+ eventVersion: String | None
189
+ eventSource: String | None
190
+ awsRegion: String | None
191
+ dynamodb: StreamRecord | None
192
+ userIdentity: Identity | None
193
193
 
194
194
 
195
- RecordList = List[Record]
195
+ RecordList = list[Record]
196
196
 
197
197
 
198
198
  class GetRecordsOutput(TypedDict, total=False):
199
- Records: Optional[RecordList]
200
- NextShardIterator: Optional[ShardIterator]
199
+ Records: RecordList | None
200
+ NextShardIterator: ShardIterator | None
201
201
 
202
202
 
203
203
  class GetShardIteratorInput(ServiceRequest):
204
204
  StreamArn: StreamArn
205
205
  ShardId: ShardId
206
206
  ShardIteratorType: ShardIteratorType
207
- SequenceNumber: Optional[SequenceNumber]
207
+ SequenceNumber: SequenceNumber | None
208
208
 
209
209
 
210
210
  class GetShardIteratorOutput(TypedDict, total=False):
211
- ShardIterator: Optional[ShardIterator]
211
+ ShardIterator: ShardIterator | None
212
212
 
213
213
 
214
214
  class ListStreamsInput(ServiceRequest):
215
- TableName: Optional[TableName]
216
- Limit: Optional[PositiveIntegerObject]
217
- ExclusiveStartStreamArn: Optional[StreamArn]
215
+ TableName: TableName | None
216
+ Limit: PositiveIntegerObject | None
217
+ ExclusiveStartStreamArn: StreamArn | None
218
218
 
219
219
 
220
220
  class Stream(TypedDict, total=False):
221
- StreamArn: Optional[StreamArn]
222
- TableName: Optional[TableName]
223
- StreamLabel: Optional[String]
221
+ StreamArn: StreamArn | None
222
+ TableName: TableName | None
223
+ StreamLabel: String | None
224
224
 
225
225
 
226
- StreamList = List[Stream]
226
+ StreamList = list[Stream]
227
227
 
228
228
 
229
229
  class ListStreamsOutput(TypedDict, total=False):
230
- Streams: Optional[StreamList]
231
- LastEvaluatedStreamArn: Optional[StreamArn]
230
+ Streams: StreamList | None
231
+ LastEvaluatedStreamArn: StreamArn | None
232
232
 
233
233
 
234
234
  class DynamodbstreamsApi:
235
- service = "dynamodbstreams"
236
- version = "2012-08-10"
235
+ service: str = "dynamodbstreams"
236
+ version: str = "2012-08-10"
237
237
 
238
238
  @handler("DescribeStream")
239
239
  def describe_stream(