localstack-core 4.13.2.dev105__py3-none-any.whl → 4.13.2.dev107__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/services/cloudwatch/alarm_scheduler.py +16 -5
- localstack/services/cloudwatch/provider.py +7 -18
- localstack/services/cloudwatch/provider_v2.py +7 -18
- localstack/services/kms/utils.py +4 -8
- localstack/services/route53/provider.py +1 -6
- localstack/utils/tagging.py +1 -1
- localstack/version.py +2 -2
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/METADATA +1 -1
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/RECORD +14 -14
- {localstack_core-4.13.2.dev105.data → localstack_core-4.13.2.dev107.data}/scripts/localstack-supervisor +0 -0
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/WHEEL +0 -0
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/entry_points.txt +0 -0
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/licenses/LICENSE.txt +0 -0
- {localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/top_level.txt +0 -0
|
@@ -7,6 +7,7 @@ from typing import TYPE_CHECKING
|
|
|
7
7
|
|
|
8
8
|
from localstack.aws.api.cloudwatch import MetricAlarm, MetricDataQuery, MetricStat, StateValue
|
|
9
9
|
from localstack.aws.connect import connect_to
|
|
10
|
+
from localstack.runtime.shutdown import SHUTDOWN_HANDLERS
|
|
10
11
|
from localstack.utils.aws import arns, aws_stack
|
|
11
12
|
from localstack.utils.scheduler import Scheduler
|
|
12
13
|
|
|
@@ -38,16 +39,26 @@ class AlarmScheduler:
|
|
|
38
39
|
"""
|
|
39
40
|
super().__init__()
|
|
40
41
|
self.scheduler = Scheduler()
|
|
41
|
-
self.thread = threading.Thread(target=self.scheduler.run, name="cloudwatch-scheduler")
|
|
42
|
-
self.thread.start()
|
|
43
42
|
self.scheduled_alarms = {}
|
|
43
|
+
self.thread: threading.Thread | None = None
|
|
44
44
|
|
|
45
|
-
def
|
|
45
|
+
def start(self) -> None:
|
|
46
|
+
if not (self.thread and self.thread.is_alive()):
|
|
47
|
+
LOG.debug("Starting CloudWatch scheduler")
|
|
48
|
+
self.thread = threading.Thread(target=self.scheduler.run, name="cloudwatch-scheduler")
|
|
49
|
+
self.thread.start()
|
|
50
|
+
SHUTDOWN_HANDLERS.register(self.shutdown)
|
|
51
|
+
|
|
52
|
+
def shutdown(self) -> None:
|
|
46
53
|
"""
|
|
47
|
-
|
|
54
|
+
Shutdown the scheduler, must be called before application stops
|
|
48
55
|
"""
|
|
56
|
+
LOG.debug("Stopping CloudWatch scheduler")
|
|
49
57
|
self.scheduler.close()
|
|
50
|
-
self.
|
|
58
|
+
self.scheduled_alarms.clear()
|
|
59
|
+
SHUTDOWN_HANDLERS.unregister(self.shutdown)
|
|
60
|
+
if self.thread:
|
|
61
|
+
self.thread.join(10)
|
|
51
62
|
|
|
52
63
|
def schedule_metric_alarm(self, alarm_arn: str) -> None:
|
|
53
64
|
"""(Re-)schedules the alarm, if the alarm is re-scheduled, the running alarm scheduler will be cancelled before
|
|
@@ -305,7 +305,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
305
305
|
|
|
306
306
|
def __init__(self):
|
|
307
307
|
self.tags = TaggingService()
|
|
308
|
-
self.alarm_scheduler =
|
|
308
|
+
self.alarm_scheduler = AlarmScheduler()
|
|
309
309
|
|
|
310
310
|
def accept_state_visitor(self, visitor: StateVisitor):
|
|
311
311
|
visitor.visit(cloudwatch_backends)
|
|
@@ -314,19 +314,19 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
314
314
|
ROUTER.add(PATH_GET_RAW_METRICS, self.get_raw_metrics)
|
|
315
315
|
|
|
316
316
|
def on_before_start(self):
|
|
317
|
-
self.
|
|
317
|
+
self.alarm_scheduler.start()
|
|
318
318
|
|
|
319
319
|
def on_before_state_reset(self):
|
|
320
|
-
self.
|
|
320
|
+
self.alarm_scheduler.shutdown()
|
|
321
321
|
|
|
322
322
|
def on_after_state_reset(self):
|
|
323
|
-
self.
|
|
323
|
+
self.alarm_scheduler.start()
|
|
324
324
|
|
|
325
325
|
def on_before_state_load(self):
|
|
326
|
-
self.
|
|
326
|
+
self.alarm_scheduler.shutdown()
|
|
327
327
|
|
|
328
328
|
def on_after_state_load(self):
|
|
329
|
-
self.
|
|
329
|
+
self.alarm_scheduler.start()
|
|
330
330
|
|
|
331
331
|
def restart_alarms(*args):
|
|
332
332
|
poll_condition(lambda: SERVICE_PLUGINS.is_running("cloudwatch"))
|
|
@@ -335,18 +335,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
335
335
|
start_worker_thread(restart_alarms)
|
|
336
336
|
|
|
337
337
|
def on_before_stop(self):
|
|
338
|
-
self.
|
|
339
|
-
|
|
340
|
-
def start_alarm_scheduler(self):
|
|
341
|
-
if not self.alarm_scheduler:
|
|
342
|
-
LOG.debug("starting cloudwatch scheduler")
|
|
343
|
-
self.alarm_scheduler = AlarmScheduler()
|
|
344
|
-
|
|
345
|
-
def shutdown_alarm_scheduler(self):
|
|
346
|
-
if self.alarm_scheduler:
|
|
347
|
-
LOG.debug("stopping cloudwatch scheduler")
|
|
348
|
-
self.alarm_scheduler.shutdown_scheduler()
|
|
349
|
-
self.alarm_scheduler = None
|
|
338
|
+
self.alarm_scheduler.shutdown()
|
|
350
339
|
|
|
351
340
|
def delete_alarms(self, context: RequestContext, alarm_names: AlarmNames, **kwargs) -> None:
|
|
352
341
|
moto.call_moto(context)
|
|
@@ -148,9 +148,9 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
148
148
|
"""
|
|
149
149
|
|
|
150
150
|
def __init__(self):
|
|
151
|
-
self.alarm_scheduler: AlarmScheduler = None
|
|
152
151
|
self.store = None
|
|
153
152
|
self.cloudwatch_database = CloudwatchDatabase()
|
|
153
|
+
self.alarm_scheduler = AlarmScheduler()
|
|
154
154
|
|
|
155
155
|
@staticmethod
|
|
156
156
|
def get_store(account_id: str, region: str) -> CloudWatchStore:
|
|
@@ -164,21 +164,21 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
164
164
|
ROUTER.add(PATH_GET_RAW_METRICS, self.get_raw_metrics)
|
|
165
165
|
|
|
166
166
|
def on_before_start(self):
|
|
167
|
-
self.
|
|
167
|
+
self.alarm_scheduler.start()
|
|
168
168
|
|
|
169
169
|
def on_before_state_reset(self):
|
|
170
|
-
self.
|
|
170
|
+
self.alarm_scheduler.shutdown()
|
|
171
171
|
self.cloudwatch_database.clear_tables()
|
|
172
172
|
|
|
173
173
|
def on_after_state_reset(self):
|
|
174
174
|
self.cloudwatch_database = CloudwatchDatabase()
|
|
175
|
-
self.
|
|
175
|
+
self.alarm_scheduler.start()
|
|
176
176
|
|
|
177
177
|
def on_before_state_load(self):
|
|
178
|
-
self.
|
|
178
|
+
self.alarm_scheduler.shutdown()
|
|
179
179
|
|
|
180
180
|
def on_after_state_load(self):
|
|
181
|
-
self.
|
|
181
|
+
self.alarm_scheduler.start()
|
|
182
182
|
|
|
183
183
|
def restart_alarms(*args):
|
|
184
184
|
poll_condition(lambda: SERVICE_PLUGINS.is_running("cloudwatch"))
|
|
@@ -187,18 +187,7 @@ class CloudwatchProvider(CloudwatchApi, ServiceLifecycleHook):
|
|
|
187
187
|
start_worker_thread(restart_alarms)
|
|
188
188
|
|
|
189
189
|
def on_before_stop(self):
|
|
190
|
-
self.
|
|
191
|
-
|
|
192
|
-
def start_alarm_scheduler(self):
|
|
193
|
-
if not self.alarm_scheduler:
|
|
194
|
-
LOG.debug("starting cloudwatch scheduler")
|
|
195
|
-
self.alarm_scheduler = AlarmScheduler()
|
|
196
|
-
|
|
197
|
-
def shutdown_alarm_scheduler(self):
|
|
198
|
-
if self.alarm_scheduler:
|
|
199
|
-
LOG.debug("stopping cloudwatch scheduler")
|
|
200
|
-
self.alarm_scheduler.shutdown_scheduler()
|
|
201
|
-
self.alarm_scheduler = None
|
|
190
|
+
self.alarm_scheduler.shutdown()
|
|
202
191
|
|
|
203
192
|
def delete_alarms(self, context: RequestContext, alarm_names: AlarmNames, **kwargs) -> None:
|
|
204
193
|
"""
|
localstack/services/kms/utils.py
CHANGED
|
@@ -102,13 +102,11 @@ def get_custom_key_material(request: CreateKeyRequest | None) -> bytes | None:
|
|
|
102
102
|
if not request:
|
|
103
103
|
return None
|
|
104
104
|
|
|
105
|
-
custom_key_material = None
|
|
106
105
|
tags = request.get("Tags", [])
|
|
107
106
|
for tag in tags:
|
|
108
107
|
if tag["TagKey"] == TAG_KEY_CUSTOM_KEY_MATERIAL:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return custom_key_material
|
|
108
|
+
return base64.b64decode(tag["TagValue"])
|
|
109
|
+
return None
|
|
112
110
|
|
|
113
111
|
|
|
114
112
|
def get_custom_key_id(request: CreateKeyRequest | None) -> bytes | None:
|
|
@@ -121,13 +119,11 @@ def get_custom_key_id(request: CreateKeyRequest | None) -> bytes | None:
|
|
|
121
119
|
if not request:
|
|
122
120
|
return None
|
|
123
121
|
|
|
124
|
-
custom_key_id = None
|
|
125
122
|
tags = request.get("Tags", [])
|
|
126
123
|
for tag in tags:
|
|
127
124
|
if tag["TagKey"] == TAG_KEY_CUSTOM_ID:
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
return custom_key_id
|
|
125
|
+
return tag["TagValue"]
|
|
126
|
+
return None
|
|
131
127
|
|
|
132
128
|
|
|
133
129
|
def execute_dry_run_capable[T](func: Callable[..., T], dry_run: bool, *args, **kwargs) -> T:
|
|
@@ -27,21 +27,16 @@ from localstack.aws.api.route53 import (
|
|
|
27
27
|
from localstack.aws.connect import connect_to
|
|
28
28
|
from localstack.services.moto import call_moto
|
|
29
29
|
from localstack.services.plugins import ServiceLifecycleHook
|
|
30
|
-
from localstack.services.route53.models import
|
|
30
|
+
from localstack.services.route53.models import route53_stores
|
|
31
31
|
from localstack.state import StateVisitor
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
class Route53Provider(Route53Api, ServiceLifecycleHook):
|
|
35
35
|
def accept_state_visitor(self, visitor: StateVisitor):
|
|
36
|
-
from localstack.services.route53.models import route53_stores
|
|
37
36
|
|
|
38
37
|
visitor.visit(route53_backends)
|
|
39
38
|
visitor.visit(route53_stores)
|
|
40
39
|
|
|
41
|
-
@staticmethod
|
|
42
|
-
def get_route53_store(account_id: str, region: str) -> Route53Store:
|
|
43
|
-
return route53_stores[account_id][region]
|
|
44
|
-
|
|
45
40
|
# No tag deletion logic to handle in Community. Overwritten in Pro implementation.
|
|
46
41
|
def remove_resource_tags(
|
|
47
42
|
self, context: RequestContext, resource_type: str, resource_id: str
|
localstack/utils/tagging.py
CHANGED
|
@@ -75,7 +75,7 @@ class Tags:
|
|
|
75
75
|
_tags if the resource has been deleted.
|
|
76
76
|
|
|
77
77
|
This distinction is important to maintain parity with the Resource Groups Tagging API (RGTA) which will tap into
|
|
78
|
-
supported service's `Tags` dataclass within
|
|
78
|
+
supported service's `Tags` dataclass within its store.
|
|
79
79
|
"""
|
|
80
80
|
|
|
81
81
|
_tags: dict[ResourceARN, TagMap] = field(default_factory=dict)
|
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.13.2.
|
|
32
|
-
__version_tuple__ = version_tuple = (4, 13, 2, '
|
|
31
|
+
__version__ = version = '4.13.2.dev107'
|
|
32
|
+
__version_tuple__ = version_tuple = (4, 13, 2, 'dev107')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -4,7 +4,7 @@ localstack/deprecations.py,sha256=g0E-_q3apmHlOET2Gg5_biUtN2b4XygnI5aeeaZm6ZY,15
|
|
|
4
4
|
localstack/openapi.yaml,sha256=jFUzv-NKkJttxb8HRrmKiNYOmJD-zVfPxG3DDMrRwfg,30865
|
|
5
5
|
localstack/plugins.py,sha256=BIJC9dlo0WbP7lLKkCiGtd_2q5oeqiHZohvoRTcejXM,2457
|
|
6
6
|
localstack/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
localstack/version.py,sha256=
|
|
7
|
+
localstack/version.py,sha256=YHdJl32h52phmub-Zgz6ycMdlMvFMGO3M6Skcn62pjg,723
|
|
8
8
|
localstack/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
localstack/aws/accounts.py,sha256=102zpGowOxo0S6UGMpfjw14QW7WCLVAGsnFK5xFMLoo,3043
|
|
10
10
|
localstack/aws/app.py,sha256=n9bJCfJRuMz_gLGAH430c3bIQXgUXeWO5NPfcdL2MV8,5145
|
|
@@ -337,11 +337,11 @@ localstack/services/cloudformation/v2/provider.py,sha256=1cr_3flqALbY-H40lrVCcIq
|
|
|
337
337
|
localstack/services/cloudformation/v2/types.py,sha256=jsfvn2z6weqruaDvv6qtSILtFiOTRl9fIjl0vXvl108,1060
|
|
338
338
|
localstack/services/cloudformation/v2/utils.py,sha256=U1-YK7BEfA2lRKuUzDUVQ_dXUXybTHciNZA1G3xuZI8,202
|
|
339
339
|
localstack/services/cloudwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
340
|
-
localstack/services/cloudwatch/alarm_scheduler.py,sha256=
|
|
340
|
+
localstack/services/cloudwatch/alarm_scheduler.py,sha256=6C3LIdgoeiALBSglTILsqxx4jHwlaP81JeS_tVycjiM,16233
|
|
341
341
|
localstack/services/cloudwatch/cloudwatch_database_helper.py,sha256=IK_MgxG3xTkpKbBe-Buv_6wUuHEc3MGQOqMAqHoEOzk,17270
|
|
342
342
|
localstack/services/cloudwatch/models.py,sha256=gy6kNsAjBggpTgzSX-MfUKYnkpkZ2yanNNNcGYSLASw,4063
|
|
343
|
-
localstack/services/cloudwatch/provider.py,sha256=
|
|
344
|
-
localstack/services/cloudwatch/provider_v2.py,sha256=
|
|
343
|
+
localstack/services/cloudwatch/provider.py,sha256=YTtjQLKOLaRVbkUOrkAPCk7Tf8gydncrdQhU3UOHjdI,19308
|
|
344
|
+
localstack/services/cloudwatch/provider_v2.py,sha256=fkxU9Wx-fjYTrBp1nBihuKtctN_ImAB4btlGptuHykQ,44521
|
|
345
345
|
localstack/services/cloudwatch/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
346
346
|
localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.py,sha256=T0P5uTDjQO3lNw5w4wcdBgzFthGDjJXUkPtHo1BP13I,5172
|
|
347
347
|
localstack/services/cloudwatch/resource_providers/aws_cloudwatch_alarm.schema.json,sha256=8Nam5WqGfyW85m55UVCwJF17Re4tPOIJY_m6Wq37y8k,3829
|
|
@@ -530,7 +530,7 @@ localstack/services/kms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
|
530
530
|
localstack/services/kms/exceptions.py,sha256=BgmFaOgGcBheRPQyZFFjn7_W8i6ChJXvJoSh_yV-Ti0,535
|
|
531
531
|
localstack/services/kms/models.py,sha256=lglxgXk45R9hYU_r22rtpGZKtDqpC7ExGyAayi2mowc,37239
|
|
532
532
|
localstack/services/kms/provider.py,sha256=z707GU_EAp2Pu6tl9iJePBHc6e_Xznh2Dwmm7nX14nE,75766
|
|
533
|
-
localstack/services/kms/utils.py,sha256=
|
|
533
|
+
localstack/services/kms/utils.py,sha256=VNmGwrMwQwF8nUc1D-5i4W0UEHLSCIGpZ0I-0Du5ueY,5182
|
|
534
534
|
localstack/services/kms/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
535
535
|
localstack/services/kms/resource_providers/aws_kms_alias.py,sha256=LsvRlZMrzMlGq1_KcMlxz9RE16tUe7bcqQ3qQYE-vtg,2614
|
|
536
536
|
localstack/services/kms/resource_providers/aws_kms_alias.schema.json,sha256=i3PJRVJ7jnE1PzxitVBFz40dyk8M7O8sRzBSPL-kHsM,1795
|
|
@@ -668,7 +668,7 @@ localstack/services/resourcegroupstaggingapi/__init__.py,sha256=47DEQpj8HBSa-_TI
|
|
|
668
668
|
localstack/services/resourcegroupstaggingapi/provider.py,sha256=E-5Ao3Vxre6mtezoE6s7HBCRKKkSsZ8LMOHvng2hx8o,590
|
|
669
669
|
localstack/services/route53/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
670
670
|
localstack/services/route53/models.py,sha256=4pFJA_y_mSvN415rmzThun4xmD51FD8t3SsjZR7a2dM,490
|
|
671
|
-
localstack/services/route53/provider.py,sha256=
|
|
671
|
+
localstack/services/route53/provider.py,sha256=k6txmv9H0wZewIzIxsWJIDqT06Zra5FhlYzy9L0qcrI,5577
|
|
672
672
|
localstack/services/route53/resource_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
673
673
|
localstack/services/route53/resource_providers/aws_route53_healthcheck.py,sha256=BWq8e2R3uU_chO1wfDxErstgLvs3pSKtF6-KByO6Oao,3602
|
|
674
674
|
localstack/services/route53/resource_providers/aws_route53_healthcheck.schema.json,sha256=N1iHZx1lCYI-O-f4_pHaEImDeIgTIzFgaBwfCm-G8JI,6368
|
|
@@ -1259,7 +1259,7 @@ localstack/utils/serving.py,sha256=wo1jTiqvuNUacuV0aYv2RfDyRd7lxoshrNQ59wjzx8s,5
|
|
|
1259
1259
|
localstack/utils/ssl.py,sha256=RGAca4iIYc0tFYcfsev4ea1wOaWE4GuggghcfB8K5Lo,2510
|
|
1260
1260
|
localstack/utils/strings.py,sha256=CrEoxX_VS51v0xFxhAArnp6_MUFTOR8vR02sWjVn-Ig,7757
|
|
1261
1261
|
localstack/utils/sync.py,sha256=Q0IscaZX8wdoR4wI7e9VDVBDgIW3YdrY0Av-BJjgQ68,6598
|
|
1262
|
-
localstack/utils/tagging.py,sha256=
|
|
1262
|
+
localstack/utils/tagging.py,sha256=S8uALmOsLwXGVcOynSpe-z4E7gmFZ-X7kzQr5Vgu1NQ,5374
|
|
1263
1263
|
localstack/utils/testutil.py,sha256=_YG81sqwl3kFj2kaqbADQUUM61a7TiOGK_1qpxIQnAk,21555
|
|
1264
1264
|
localstack/utils/threads.py,sha256=6rG43WQnitKkmuAGtIGAzGrRd_sVFQpw1UIRZSSU8JU,5265
|
|
1265
1265
|
localstack/utils/time.py,sha256=G9GFVkyRNXyqG2SPPARLC-wAcCHXuJLWSqXrnhqNNy8,2260
|
|
@@ -1311,10 +1311,10 @@ localstack/utils/server/tcp_proxy.py,sha256=y2NJAmvftTiAYsLU_8qe4W5LGqwUw21i90Pu
|
|
|
1311
1311
|
localstack/utils/xray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1312
1312
|
localstack/utils/xray/trace_header.py,sha256=ahXk9eonq7LpeENwlqUEPj3jDOCiVRixhntQuxNor-Q,6209
|
|
1313
1313
|
localstack/utils/xray/traceid.py,sha256=GKO-R2sMMjlrH2UaLPXlQlZ6flbE7ZKb6IZMtMu_M5U,1110
|
|
1314
|
-
localstack_core-4.13.2.
|
|
1315
|
-
localstack_core-4.13.2.
|
|
1316
|
-
localstack_core-4.13.2.
|
|
1317
|
-
localstack_core-4.13.2.
|
|
1318
|
-
localstack_core-4.13.2.
|
|
1319
|
-
localstack_core-4.13.2.
|
|
1320
|
-
localstack_core-4.13.2.
|
|
1314
|
+
localstack_core-4.13.2.dev107.data/scripts/localstack-supervisor,sha256=nm1Il2d6ASyOB6Vo4CRHd90w7TK9FdRl9VPp0NN6hUk,6378
|
|
1315
|
+
localstack_core-4.13.2.dev107.dist-info/licenses/LICENSE.txt,sha256=3PC-9Z69UsNARuQ980gNR_JsLx8uvMjdG6C7cc4LBYs,606
|
|
1316
|
+
localstack_core-4.13.2.dev107.dist-info/METADATA,sha256=E2gkToL3bvSW56wNceg0ygNO9g1fdL6w5S2DU-lmMqk,5868
|
|
1317
|
+
localstack_core-4.13.2.dev107.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
1318
|
+
localstack_core-4.13.2.dev107.dist-info/entry_points.txt,sha256=59aAnn8KVHWAHkMg2dOgmgYtRZ-xTX9T4UiIchWgK6k,20975
|
|
1319
|
+
localstack_core-4.13.2.dev107.dist-info/top_level.txt,sha256=3sqmK2lGac8nCy8nwsbS5SpIY_izmtWtgaTFKHYVHbI,11
|
|
1320
|
+
localstack_core-4.13.2.dev107.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
{localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{localstack_core-4.13.2.dev105.dist-info → localstack_core-4.13.2.dev107.dist-info}/top_level.txt
RENAMED
|
File without changes
|