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
localstack/utils/sync.py CHANGED
@@ -4,7 +4,8 @@ import functools
4
4
  import threading
5
5
  import time
6
6
  from collections import defaultdict
7
- from typing import Callable, Literal, TypeVar
7
+ from collections.abc import Callable
8
+ from typing import Literal, TypeVar
8
9
 
9
10
 
10
11
  class ShortCircuitWaitException(Exception):
@@ -140,3 +141,127 @@ class SynchronizedDefaultDict(defaultdict):
140
141
  def __str__(self):
141
142
  with self._lock:
142
143
  return super().__str__()
144
+
145
+
146
+ class Once:
147
+ """
148
+ An object that will perform an action exactly once.
149
+ Inspired by Golang's [sync.Once](https://pkg.go.dev/sync#Once) operation.
150
+
151
+
152
+ ### Example 1
153
+
154
+ Multiple threads using `Once::do` to ensure only 1 line is printed.
155
+
156
+ ```python
157
+ import threading
158
+ import time
159
+ import random
160
+
161
+ greet_once = Once()
162
+ def greet():
163
+ print("This should happen only once.")
164
+
165
+ greet_threads = []
166
+ for _ in range(10):
167
+ t = threading.Thread(target=lambda: greet_once.do(greet))
168
+ greet_threads.append(t)
169
+ t.start()
170
+
171
+ for t in greet_threads:
172
+ t.join()
173
+ ```
174
+
175
+
176
+ ### Example 2
177
+
178
+ Ensuring idemponent calling to prevent exceptions on multiple calls.
179
+
180
+ ```python
181
+ import os
182
+
183
+ class Service:
184
+ close_once: sync.Once
185
+
186
+ def start(self):
187
+ with open("my-service.txt) as f:
188
+ myfile.write("Started service")
189
+
190
+ def close(self):
191
+ # Ensure we only ever delete the file once on close
192
+ self.close_once.do(lambda: os.remove("my-service.txt"))
193
+
194
+ ```
195
+
196
+
197
+ """
198
+
199
+ _is_done: bool = False
200
+ _mu: threading.Lock = threading.Lock()
201
+
202
+ def do(self, fn: Callable[[], None]):
203
+ """
204
+ `do` calls the function `fn()` if-and-only-if `do` has never been called before.
205
+
206
+ This ensures idempotent and thread-safe execution.
207
+
208
+ If the function raises an exception, `do` considers `fn` as done, where subsequent calls are still no-ops.
209
+ """
210
+ if self._is_done:
211
+ return
212
+
213
+ with self._mu:
214
+ if not self._is_done:
215
+ try:
216
+ fn()
217
+ finally:
218
+ self._is_done = True
219
+
220
+
221
+ def once_func(fn: Callable[..., T]) -> Callable[..., T | None]:
222
+ """
223
+ Wraps and returns a function that can only ever execute once.
224
+
225
+ The first call to the returned function will permanently set the result.
226
+ If the wrapped function raises an exception, this will be re-raised on each subsequent call.
227
+
228
+ This function can be used either as a decorator or called directly.
229
+
230
+ Direct usage:
231
+ ```python
232
+ delete_file = once_func(os.remove)
233
+
234
+ delete_file("myfile.txt") # deletes the file
235
+ delete_file("myfile.txt") # does nothing
236
+ ```
237
+
238
+ As a decorator:
239
+ ```python
240
+ @once_func
241
+ def delete_file():
242
+ os.remove("myfile.txt")
243
+
244
+ delete_file() # deletes the file
245
+ delete_file() # does nothing
246
+ ```
247
+ """
248
+ once = Once()
249
+
250
+ result, exception = None, None
251
+
252
+ def _do(*args, **kwargs):
253
+ nonlocal result, exception
254
+ try:
255
+ result = fn(*args, **kwargs)
256
+ except Exception as e:
257
+ exception = e
258
+ raise
259
+
260
+ @functools.wraps(fn)
261
+ def wrapper(*args, **kwargs):
262
+ once.do(lambda: _do(*args, **kwargs))
263
+ if exception is not None:
264
+ raise exception
265
+ return result
266
+
267
+ return wrapper
@@ -1,6 +1,3 @@
1
- from typing import Optional
2
-
3
-
4
1
  class TaggingService:
5
2
  key_field: str
6
3
  value_field: str
@@ -17,7 +14,7 @@ class TaggingService:
17
14
 
18
15
  self.tags = {}
19
16
 
20
- def list_tags_for_resource(self, arn: str, root_name: Optional[str] = None):
17
+ def list_tags_for_resource(self, arn: str, root_name: str | None = None):
21
18
  root_name = root_name or "Tags"
22
19
 
23
20
  result = []
@@ -7,7 +7,8 @@ import re
7
7
  import shutil
8
8
  import tempfile
9
9
  import time
10
- from typing import Any, Callable, Optional
10
+ from collections.abc import Callable
11
+ from typing import Any
11
12
 
12
13
  from localstack.aws.api.lambda_ import Runtime
13
14
  from localstack.aws.connect import connect_externally_to, connect_to
@@ -20,7 +21,7 @@ from localstack.utils.urls import localstack_host
20
21
  try:
21
22
  from typing import Literal
22
23
  except ImportError:
23
- from typing_extensions import Literal
24
+ from typing import Literal
24
25
 
25
26
  import boto3
26
27
  import requests
@@ -548,7 +549,7 @@ def list_all_log_events(log_group_name: str, logs_client=None) -> list[dict]:
548
549
  def get_lambda_log_events(
549
550
  function_name,
550
551
  delay_time=DEFAULT_GET_LOG_EVENTS_DELAY,
551
- regex_filter: Optional[str] = None,
552
+ regex_filter: str | None = None,
552
553
  log_group=None,
553
554
  logs_client=None,
554
555
  ):
@@ -596,7 +597,7 @@ def list_all_resources(
596
597
  page_function: Callable[[dict], Any],
597
598
  last_token_attr_name: str,
598
599
  list_attr_name: str,
599
- next_token_attr_name: Optional[str] = None,
600
+ next_token_attr_name: str | None = None,
600
601
  ) -> list:
601
602
  """
602
603
  List all available resources by loading all available pages using `page_function`.
@@ -3,9 +3,9 @@ import inspect
3
3
  import logging
4
4
  import threading
5
5
  import traceback
6
+ from collections.abc import Callable
6
7
  from concurrent.futures import Future
7
8
  from multiprocessing.dummy import Pool
8
- from typing import Callable, Optional
9
9
 
10
10
  LOG = logging.getLogger(__name__)
11
11
 
@@ -26,7 +26,7 @@ class FuncThread(threading.Thread):
26
26
  params=None,
27
27
  quiet=False,
28
28
  on_stop: Callable[["FuncThread"], None] = None,
29
- name: Optional[str] = None,
29
+ name: str | None = None,
30
30
  daemon=True,
31
31
  ):
32
32
  global counter
localstack/utils/time.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import time
2
2
  from datetime import date, datetime, timezone, tzinfo
3
- from typing import Optional
3
+ from zoneinfo import ZoneInfo
4
4
 
5
5
  TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%S"
6
6
  TIMESTAMP_FORMAT_TZ = "%Y-%m-%dT%H:%M:%SZ"
@@ -42,6 +42,11 @@ def epoch_timestamp() -> float:
42
42
 
43
43
 
44
44
  def parse_timestamp(ts_str: str) -> datetime:
45
+ """
46
+ Parse the incoming date string into a timezone aware datetime object
47
+ :param ts_str:
48
+ :return:
49
+ """
45
50
  for ts_format in [
46
51
  TIMESTAMP_FORMAT,
47
52
  TIMESTAMP_FORMAT_TZ,
@@ -49,13 +54,16 @@ def parse_timestamp(ts_str: str) -> datetime:
49
54
  TIMESTAMP_READABLE_FORMAT,
50
55
  ]:
51
56
  try:
52
- return datetime.strptime(ts_str, ts_format)
57
+ value = datetime.strptime(ts_str, ts_format)
58
+ if value.tzinfo is None:
59
+ value = value.replace(tzinfo=ZoneInfo("UTC"))
60
+ return value
53
61
  except ValueError:
54
62
  pass
55
63
  raise Exception(f"Unable to parse timestamp string with any known formats: {ts_str}")
56
64
 
57
65
 
58
- def now(millis: bool = False, tz: Optional[tzinfo] = None) -> int:
66
+ def now(millis: bool = False, tz: tzinfo | None = None) -> int:
59
67
  return mktime(datetime.now(tz=tz), millis=millis)
60
68
 
61
69
 
localstack/utils/urls.py CHANGED
@@ -1,5 +1,3 @@
1
- from typing import Optional
2
-
3
1
  from localstack import config
4
2
  from localstack.config import HostAndPort
5
3
 
@@ -12,7 +10,7 @@ def hostname_from_url(url: str) -> str:
12
10
  return url.split("://")[-1].split("/")[0].split(":")[0]
13
11
 
14
12
 
15
- def localstack_host(custom_port: Optional[int] = None) -> HostAndPort:
13
+ def localstack_host(custom_port: int | None = None) -> HostAndPort:
16
14
  """
17
15
  Determine the host and port to return to the user based on:
18
16
  - the user's configuration (e.g environment variable overrides)
localstack/version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '4.7.1.dev139'
32
- __version_tuple__ = version_tuple = (4, 7, 1, 'dev139')
31
+ __version__ = version = '4.10.1.dev42'
32
+ __version_tuple__ = version_tuple = (4, 10, 1, 'dev42')
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: localstack-core
3
- Version: 4.7.1.dev139
3
+ Version: 4.10.1.dev42
4
4
  Summary: The core library and runtime of LocalStack
5
5
  Author-email: LocalStack Contributors <info@localstack.cloud>
6
6
  License-Expression: Apache-2.0
@@ -9,13 +9,13 @@ Project-URL: Documentation, https://docs.localstack.cloud
9
9
  Project-URL: Repository, https://github.com/localstack/localstack.git
10
10
  Project-URL: Issues, https://github.com/localstack/localstack/issues
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.13
13
13
  Classifier: Topic :: Internet
14
14
  Classifier: Topic :: Software Development :: Testing
15
15
  Classifier: Topic :: System :: Emulators
16
- Requires-Python: >=3.9
16
+ Requires-Python: >=3.10
17
17
  License-File: LICENSE.txt
18
- Requires-Dist: build
18
+ Requires-Dist: asn1crypto>=1.5.1
19
19
  Requires-Dist: click>=7.1
20
20
  Requires-Dist: cachetools>=5.0
21
21
  Requires-Dist: cryptography
@@ -29,48 +29,53 @@ Requires-Dist: pyyaml>=5.1
29
29
  Requires-Dist: rich>=12.3.0
30
30
  Requires-Dist: requests>=2.20.0
31
31
  Requires-Dist: semver>=2.10
32
- Requires-Dist: tailer>=0.4.1
33
32
  Provides-Extra: base-runtime
34
- Requires-Dist: boto3==1.40.25; extra == "base-runtime"
35
- Requires-Dist: botocore==1.40.25; extra == "base-runtime"
33
+ Requires-Dist: boto3==1.40.74; extra == "base-runtime"
34
+ Requires-Dist: botocore==1.40.74; extra == "base-runtime"
36
35
  Requires-Dist: awscrt!=0.27.1,>=0.13.14; extra == "base-runtime"
37
36
  Requires-Dist: cbor2>=5.5.0; extra == "base-runtime"
38
37
  Requires-Dist: dnspython>=1.16.0; extra == "base-runtime"
39
38
  Requires-Dist: docker>=6.1.1; extra == "base-runtime"
40
39
  Requires-Dist: jsonpatch>=1.24; extra == "base-runtime"
40
+ Requires-Dist: jsonpointer>=3.0.0; extra == "base-runtime"
41
+ Requires-Dist: jsonschema>=4.25.1; extra == "base-runtime"
41
42
  Requires-Dist: hypercorn>=0.14.4; extra == "base-runtime"
42
43
  Requires-Dist: localstack-twisted>=23.0; extra == "base-runtime"
43
44
  Requires-Dist: openapi-core>=0.19.2; extra == "base-runtime"
44
45
  Requires-Dist: pyopenssl>=23.0.0; extra == "base-runtime"
46
+ Requires-Dist: python-dateutil>=2.9.0; extra == "base-runtime"
45
47
  Requires-Dist: readerwriterlock>=1.0.7; extra == "base-runtime"
46
48
  Requires-Dist: requests-aws4auth>=1.0; extra == "base-runtime"
49
+ Requires-Dist: typing-extensions>=4.15.0; extra == "base-runtime"
47
50
  Requires-Dist: urllib3>=2.0.7; extra == "base-runtime"
48
51
  Requires-Dist: Werkzeug>=3.1.3; extra == "base-runtime"
49
52
  Requires-Dist: xmltodict>=0.13.0; extra == "base-runtime"
50
53
  Requires-Dist: rolo>=0.7; extra == "base-runtime"
51
54
  Provides-Extra: runtime
52
55
  Requires-Dist: localstack-core[base-runtime]; extra == "runtime"
53
- Requires-Dist: awscli==1.42.25; extra == "runtime"
56
+ Requires-Dist: awscli==1.42.74; extra == "runtime"
54
57
  Requires-Dist: airspeed-ext>=0.6.3; extra == "runtime"
55
- Requires-Dist: kclpy-ext>=3.0.0; extra == "runtime"
56
58
  Requires-Dist: antlr4-python3-runtime==4.13.2; extra == "runtime"
57
59
  Requires-Dist: apispec>=5.1.1; extra == "runtime"
58
60
  Requires-Dist: aws-sam-translator>=1.15.1; extra == "runtime"
59
61
  Requires-Dist: crontab>=0.22.6; extra == "runtime"
60
62
  Requires-Dist: cryptography>=41.0.5; extra == "runtime"
63
+ Requires-Dist: jinja2>=3.1.6; extra == "runtime"
61
64
  Requires-Dist: jpype1>=1.6.0; extra == "runtime"
62
- Requires-Dist: json5>=0.9.11; extra == "runtime"
63
65
  Requires-Dist: jsonpath-ng>=1.6.1; extra == "runtime"
64
66
  Requires-Dist: jsonpath-rw>=1.4.0; extra == "runtime"
65
- Requires-Dist: moto-ext[all]==5.1.11.post1; extra == "runtime"
67
+ Requires-Dist: kclpy-ext>=3.0.0; extra == "runtime"
68
+ Requires-Dist: moto-ext[all]>=5.1.12.post22; extra == "runtime"
66
69
  Requires-Dist: opensearch-py>=2.4.1; extra == "runtime"
70
+ Requires-Dist: pydantic>=2.11.9; extra == "runtime"
67
71
  Requires-Dist: pymongo>=4.2.0; extra == "runtime"
68
72
  Requires-Dist: pyopenssl>=23.0.0; extra == "runtime"
73
+ Requires-Dist: responses>=0.25.8; extra == "runtime"
69
74
  Provides-Extra: test
70
75
  Requires-Dist: localstack-core[runtime]; extra == "test"
71
76
  Requires-Dist: coverage[toml]>=5.5; extra == "test"
72
- Requires-Dist: deepdiff>=6.4.1; extra == "test"
73
77
  Requires-Dist: httpx[http2]>=0.25; extra == "test"
78
+ Requires-Dist: json5>=0.12.1; extra == "test"
74
79
  Requires-Dist: pluggy>=1.3.0; extra == "test"
75
80
  Requires-Dist: pytest>=7.4.2; extra == "test"
76
81
  Requires-Dist: pytest-split>=0.8.0; extra == "test"
@@ -83,6 +88,7 @@ Requires-Dist: localstack-snapshot>=0.1.1; extra == "test"
83
88
  Provides-Extra: dev
84
89
  Requires-Dist: localstack-core[test]; extra == "dev"
85
90
  Requires-Dist: coveralls>=3.3.1; extra == "dev"
91
+ Requires-Dist: deptry>=0.13.0; extra == "dev"
86
92
  Requires-Dist: Cython; extra == "dev"
87
93
  Requires-Dist: networkx>=2.8.4; extra == "dev"
88
94
  Requires-Dist: openapi-spec-validator>=0.7.1; extra == "dev"
@@ -94,5 +100,5 @@ Requires-Dist: rstr>=3.2.0; extra == "dev"
94
100
  Requires-Dist: mypy; extra == "dev"
95
101
  Provides-Extra: typehint
96
102
  Requires-Dist: localstack-core[dev]; extra == "typehint"
97
- Requires-Dist: boto3-stubs[acm,acm-pca,amplify,apigateway,apigatewayv2,appconfig,appconfigdata,application-autoscaling,appsync,athena,autoscaling,backup,batch,ce,cloudcontrol,cloudformation,cloudfront,cloudtrail,cloudwatch,codebuild,codecommit,codeconnections,codedeploy,codepipeline,codestar-connections,cognito-identity,cognito-idp,dms,docdb,dynamodb,dynamodbstreams,ec2,ecr,ecs,efs,eks,elasticache,elasticbeanstalk,elbv2,emr,emr-serverless,es,events,firehose,fis,glacier,glue,iam,identitystore,iot,iot-data,iotanalytics,iotwireless,kafka,kinesis,kinesisanalytics,kinesisanalyticsv2,kms,lakeformation,lambda,logs,managedblockchain,mediaconvert,mediastore,mq,mwaa,neptune,opensearch,organizations,pi,pinpoint,pipes,qldb,qldb-session,rds,rds-data,redshift,redshift-data,resource-groups,resourcegroupstaggingapi,route53,route53resolver,s3,s3control,sagemaker,sagemaker-runtime,secretsmanager,serverlessrepo,servicediscovery,ses,sesv2,sns,sqs,ssm,sso-admin,stepfunctions,sts,timestream-query,timestream-write,transcribe,verifiedpermissions,wafv2,xray]; extra == "typehint"
103
+ Requires-Dist: boto3-stubs[acm,acm-pca,amplify,apigateway,apigatewayv2,appconfig,appconfigdata,application-autoscaling,appsync,athena,autoscaling,backup,batch,ce,cloudcontrol,cloudformation,cloudfront,cloudtrail,cloudwatch,codebuild,codecommit,codeconnections,codedeploy,codepipeline,codestar-connections,cognito-identity,cognito-idp,dms,docdb,dynamodb,dynamodbstreams,ec2,ecr,ecs,efs,eks,elasticache,elasticbeanstalk,elbv2,emr,emr-serverless,es,events,firehose,fis,glacier,glue,iam,identitystore,iot,iot-data,iotanalytics,iotwireless,kafka,kinesis,kinesisanalyticsv2,kms,lakeformation,lambda,logs,managedblockchain,mediaconvert,mediastore,mq,mwaa,neptune,opensearch,organizations,pi,pinpoint,pipes,rds,rds-data,redshift,redshift-data,resource-groups,resourcegroupstaggingapi,route53,route53resolver,s3,s3control,sagemaker,sagemaker-runtime,secretsmanager,serverlessrepo,servicediscovery,ses,sesv2,sns,sqs,ssm,sso-admin,stepfunctions,sts,timestream-query,timestream-write,transcribe,verifiedpermissions,wafv2,xray]; extra == "typehint"
98
104
  Dynamic: license-file