cloud-radar 0.14.0a0__py3-none-any.whl → 0.14.0a2__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.
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  import re
5
+ import uuid
5
6
  from pathlib import Path
6
7
  from typing import Any, Callable, Dict, Generator, List, Optional, Tuple, Union
7
8
 
@@ -26,8 +27,8 @@ class Template:
26
27
  NoValue: str = "" # Not yet implemented
27
28
  Partition: str = "aws" # Other regions not implemented
28
29
  Region: str = "us-east-1"
29
- StackId: str = "" # Not yet implemented
30
- StackName: str = "" # Not yet implemented
30
+ StackId: str = "" # If left blank this will be generated
31
+ StackName: str = "my-cloud-radar-stack"
31
32
  URLSuffix: str = "amazonaws.com" # Other regions not implemented
32
33
 
33
34
  def __init__(
@@ -310,6 +311,19 @@ class Template:
310
311
 
311
312
  return template
312
313
 
314
+ # If the StackId variable is not set, generate a value for it
315
+ def _get_populated_stack_id(self) -> str:
316
+ if not Template.StackId:
317
+ # Not explicitly set, generate a value
318
+ unique_uuid = uuid.uuid4()
319
+
320
+ return (
321
+ f"arn:{Template.Partition}:cloudformation:{self.Region}:"
322
+ f"{Template.AccountId}:stack/{Template.StackName}/{unique_uuid}"
323
+ )
324
+
325
+ return Template.StackId
326
+
313
327
  def create_stack(
314
328
  self,
315
329
  params: Optional[Dict[str, str]] = None,
@@ -318,6 +332,7 @@ class Template:
318
332
  ):
319
333
  if region:
320
334
  self.Region = region
335
+ self.StackId = self._get_populated_stack_id()
321
336
 
322
337
  self.render(params, parameters_file=parameters_file)
323
338
 
@@ -1,13 +1,12 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: cloud-radar
3
- Version: 0.14.0a0
3
+ Version: 0.14.0a2
4
4
  Summary: Run functional tests on cloudformation stacks.
5
- Home-page: https://github.com/DontShaveTheYak/cloud-radar
6
5
  License: Apache-2.0
7
6
  Keywords: aws,cloudformation,cloud-radar,testing,taskcat,cloud,radar
8
7
  Author: Levi Blaney
9
- Author-email: shadycuz@gmail.com
10
- Requires-Python: >=3.9,<3.14
8
+ Author-email: shadycuz+dev@gmail.com
9
+ Requires-Python: >=3.9,<4.0
11
10
  Classifier: Development Status :: 2 - Pre-Alpha
12
11
  Classifier: License :: OSI Approved :: Apache Software License
13
12
  Classifier: Operating System :: OS Independent
@@ -15,17 +14,15 @@ Classifier: Programming Language :: Python :: 3
15
14
  Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3
19
- Classifier: Programming Language :: Python :: 3.10
20
- Classifier: Programming Language :: Python :: 3.11
21
17
  Classifier: Programming Language :: Python :: 3.12
22
18
  Classifier: Programming Language :: Python :: 3.13
23
- Classifier: Programming Language :: Python :: 3.9
24
19
  Classifier: Topic :: Software Development :: Libraries
25
20
  Classifier: Topic :: Software Development :: Testing
26
- Requires-Dist: botocore (>=1.35.36) ; python_version >= "3.13"
21
+ Requires-Dist: botocore (>=1.35.36,<2.0.0)
27
22
  Requires-Dist: cfn-flip (>=1.3.0,<2.0.0)
28
- Requires-Dist: taskcat (>=0.9.41,<0.10.0)
23
+ Requires-Dist: taskcat (>=0.9.41,<1.0.0)
24
+ Project-URL: Changelog, https://github.com/DontShaveTheYak/cloud-radar/releases
25
+ Project-URL: Issues, https://github.com/DontShaveTheYak/cloud-radar/issues
29
26
  Project-URL: Repository, https://github.com/DontShaveTheYak/cloud-radar
30
27
  Description-Content-Type: text/markdown
31
28
 
@@ -37,7 +34,7 @@ Description-Content-Type: text/markdown
37
34
  *** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.
38
35
  *** https://www.markdownguide.org/basic-syntax/#reference-style-links
39
36
  -->
40
- [![Python][python-shield]][pypi-url]
37
+ [![Python][py-versions-shield]][pypi-url]
41
38
  [![Latest][version-shield]][pypi-url]
42
39
  [![Tests][test-shield]][test-url]
43
40
  [![Coverage][codecov-shield]][codecov-url]
@@ -200,8 +197,8 @@ The default values for pseudo parameters:
200
197
  | **NoValue** | "" |
201
198
  | **Partition** | "aws" |
202
199
  | Region | "us-east-1" |
203
- | **StackId** | "" |
204
- | **StackName** | "" |
200
+ | StackId | (generated based on other values) |
201
+ | StackName | "my-cloud-radar-stack" |
205
202
  | **URLSuffix** | "amazonaws.com" |
206
203
  _Note: Bold variables are not fully implemented yet see the [Roadmap](#roadmap)_
207
204
 
@@ -356,7 +353,6 @@ A real functional testing example using Pytest can be seen [here](./tests/test_c
356
353
  ### Unit
357
354
  - Add full functionality to pseudo variables.
358
355
  * Variables like `Partition`, `URLSuffix` should change if the region changes.
359
- * Variables like `StackName` and `StackId` should have a better default than ""
360
356
  - Handle References to resources that shouldn't exist.
361
357
  * It's currently possible that a `!Ref` to a Resource stays in the final template even if that resource is later removed because of a conditional.
362
358
 
@@ -397,6 +393,7 @@ Levi - [@shady_cuz](https://twitter.com/shady_cuz)
397
393
  <!-- MARKDOWN LINKS & IMAGES -->
398
394
  <!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
399
395
  [python-shield]: https://img.shields.io/pypi/pyversions/cloud-radar?style=for-the-badge
396
+ [py-versions-shield]: https://img.shields.io/pypi/pyversions/cloud-radar?style=for-the-badge
400
397
  [version-shield]: https://img.shields.io/pypi/v/cloud-radar?label=latest&style=for-the-badge
401
398
  [pypi-url]: https://pypi.org/project/cloud-radar/
402
399
  [test-shield]: https://img.shields.io/github/actions/workflow/status/DontShaveTheYak/cloud-radar/test.yml?label=Tests&style=for-the-badge
@@ -9,10 +9,10 @@ cloud_radar/cf/unit/_output.py,sha256=rhQQ4aJu06bxAoG7GOXkuOPzAmLCrTA2Ytb8rNXA4V
9
9
  cloud_radar/cf/unit/_parameter.py,sha256=AdPIqc2ggSW1VR0USF30zjphX3z1HHbGKQt8n-Kzhfo,3199
10
10
  cloud_radar/cf/unit/_resource.py,sha256=dWaR-5s6ea5mIu6Dhf1hY31Wd4WLHbHsbyxnu2Tz6QI,8512
11
11
  cloud_radar/cf/unit/_stack.py,sha256=_S0L9O7Lw-QAJDKubClp2b6UYtYfyzg272_7WQkUdo8,5785
12
- cloud_radar/cf/unit/_template.py,sha256=u1r1RkUPI0t8SGolWEjb3doavFwUQRaE0wOKCi_ijiI,32242
12
+ cloud_radar/cf/unit/_template.py,sha256=ESpor5rputwtCKJuvlfp_M0VUuYrciRaLNE8TfdqhRU,32782
13
13
  cloud_radar/cf/unit/functions.py,sha256=iWBhc9JmyObusAAZ2iAXf7dXof36mdqoHOLR4UzuC58,29234
14
14
  cloud_radar/cf/unit/test__template.py,sha256=jVPMJTn6Q0sSZ8BjRGyutuR9-NjdHdwDTVsd2kvjQbs,1491
15
- cloud_radar-0.14.0a0.dist-info/LICENSE.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
- cloud_radar-0.14.0a0.dist-info/METADATA,sha256=IzYVAkdE83nPx0M3_3yxW4e7wAyhLwctVZmrkc2xxVg,16791
17
- cloud_radar-0.14.0a0.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
18
- cloud_radar-0.14.0a0.dist-info/RECORD,,
15
+ cloud_radar-0.14.0a2.dist-info/LICENSE.txt,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
16
+ cloud_radar-0.14.0a2.dist-info/METADATA,sha256=YYrRVrs7kpB3BIting_ZAY7L-a4TTbjF8ivfNjcLQkw,16733
17
+ cloud_radar-0.14.0a2.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
18
+ cloud_radar-0.14.0a2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.5.2
2
+ Generator: poetry-core 2.0.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any