pycfmodel 2.0.1__tar.gz → 2.1.0__tar.gz

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 (135) hide show
  1. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/dependabot.yml +0 -2
  2. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/copilot-setup-steps.yml +1 -1
  3. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/lint-and-test.yml +3 -3
  4. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/pypi-release.yml +1 -1
  5. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/release-drafter.yml +1 -1
  6. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/test-docs.yml +1 -1
  7. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/update-cloudformation-actions.yml +2 -2
  8. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.readthedocs.yaml +1 -1
  9. {pycfmodel-2.0.1/pycfmodel.egg-info → pycfmodel-2.1.0}/PKG-INFO +4 -4
  10. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/cloudformation_actions.py +433 -45
  11. {pycfmodel-2.0.1 → pycfmodel-2.1.0/pycfmodel.egg-info}/PKG-INFO +4 -4
  12. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel.egg-info/requires.txt +2 -2
  13. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pyproject.toml +6 -6
  14. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_kms_key.py +1 -0
  15. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/uv.lock +104 -449
  16. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.flake8 +0 -0
  17. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/pull_request_template.md +0 -0
  18. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/release-drafter.yml +0 -0
  19. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.github/workflows/zizmor.yml +0 -0
  20. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/.gitignore +0 -0
  21. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/CHANGELOG.md +0 -0
  22. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/CLAUDE.md +0 -0
  23. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/CODE_OF_CONDUCT.md +0 -0
  24. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/CONTRIBUTING.md +0 -0
  25. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/LICENSE.md +0 -0
  26. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/Makefile +0 -0
  27. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/README.md +0 -0
  28. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/changelog.md +0 -0
  29. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/code_of_conduct.md +0 -0
  30. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/contributing.md +0 -0
  31. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/index.md +0 -0
  32. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/reference/cfmodel.md +0 -0
  33. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/reference/properties.md +0 -0
  34. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/reference/resources.md +0 -0
  35. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/docs/stylesheets/extra.css +0 -0
  36. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/mkdocs.yml +0 -0
  37. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/__init__.py +0 -0
  38. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/action_expander.py +0 -0
  39. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/constants.py +0 -0
  40. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/base.py +0 -0
  41. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/cf_model.py +0 -0
  42. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/generic.py +0 -0
  43. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/parameter.py +0 -0
  44. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/autoscaling_auto_scaling_group.py +0 -0
  45. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/cloudwatch_alarm.py +0 -0
  46. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/dynamodb_table.py +0 -0
  47. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/ec2_vpc_endpoint_policy.py +0 -0
  48. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/elbv2_listener.py +0 -0
  49. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/elbv2_target_group.py +0 -0
  50. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/es_domain.py +0 -0
  51. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/generic_resource.py +0 -0
  52. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_group.py +0 -0
  53. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_instance_profile.py +0 -0
  54. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_managed_policy.py +0 -0
  55. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_policy.py +0 -0
  56. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_role.py +0 -0
  57. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/iam_user.py +0 -0
  58. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/kms_key.py +0 -0
  59. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/opensearch_domain.py +0 -0
  60. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/policy.py +0 -0
  61. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/policy_document.py +0 -0
  62. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/property.py +0 -0
  63. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/security_group_egress_prop.py +0 -0
  64. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/security_group_ingress_prop.py +0 -0
  65. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/statement.py +0 -0
  66. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/statement_condition.py +0 -0
  67. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/tag.py +0 -0
  68. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/properties/types.py +0 -0
  69. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/resource.py +0 -0
  70. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/route53_record_set.py +0 -0
  71. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/s3_bucket.py +0 -0
  72. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/s3_bucket_policy.py +0 -0
  73. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/security_group.py +0 -0
  74. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/security_group_egress.py +0 -0
  75. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/security_group_ingress.py +0 -0
  76. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/sns_subscription.py +0 -0
  77. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/sns_topic.py +0 -0
  78. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/sns_topic_policy.py +0 -0
  79. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/sqs_queue.py +0 -0
  80. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/sqs_queue_policy.py +0 -0
  81. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/types.py +0 -0
  82. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/resources/wafv2_ip_set.py +0 -0
  83. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/types.py +0 -0
  84. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/model/utils.py +0 -0
  85. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/resolver.py +0 -0
  86. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel/utils.py +0 -0
  87. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel.egg-info/SOURCES.txt +0 -0
  88. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel.egg-info/dependency_links.txt +0 -0
  89. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/pycfmodel.egg-info/top_level.txt +0 -0
  90. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/scripts/generate_cloudformation_actions_file.py +0 -0
  91. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/scripts/generate_resource_from_schema.py +0 -0
  92. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/setup.cfg +0 -0
  93. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/properties/test_policy_document.py +0 -0
  94. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/properties/test_principal.py +0 -0
  95. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/properties/test_statement.py +0 -0
  96. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/properties/test_statement_condition.py +0 -0
  97. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_autoscaling_auto_scaling_group.py +0 -0
  98. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_cloudwatch_alarm.py +0 -0
  99. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_dynamodb_table.py +0 -0
  100. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_ec2_vpc_endpoint_policy.py +0 -0
  101. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_elbv2_listener.py +0 -0
  102. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_elbv2_target_group.py +0 -0
  103. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_es_domain.py +0 -0
  104. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_generic_resoure.py +0 -0
  105. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_group.py +0 -0
  106. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_instance_profile.py +0 -0
  107. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_managed_policy.py +0 -0
  108. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_policy.py +0 -0
  109. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_role.py +0 -0
  110. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_iam_user.py +0 -0
  111. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_opensearch_domain.py +0 -0
  112. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_rds_security_groups.py +0 -0
  113. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_route53_record_set.py +0 -0
  114. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_s3_bucket.py +0 -0
  115. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_s3_bucket_policy.py +0 -0
  116. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_security_group.py +0 -0
  117. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_security_group_egress.py +0 -0
  118. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_security_group_ingress.py +0 -0
  119. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_sns_subscription.py +0 -0
  120. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_sns_topic.py +0 -0
  121. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_sns_topic_policy.py +0 -0
  122. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_sqs_queue.py +0 -0
  123. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_sqs_queue_policy.py +0 -0
  124. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/resources/test_wafv2_ip_set.py +0 -0
  125. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_action_expander.py +0 -0
  126. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_cf_model.py +0 -0
  127. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_constants.py +0 -0
  128. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_generic.py +0 -0
  129. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_parameter.py +0 -0
  130. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_regexs.py +0 -0
  131. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_resolver.py +0 -0
  132. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_resource.py +0 -0
  133. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_resource_generator.py +0 -0
  134. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_types.py +0 -0
  135. {pycfmodel-2.0.1 → pycfmodel-2.1.0}/tests/test_utils.py +0 -0
@@ -9,13 +9,11 @@ updates:
9
9
  directory: "/" # Location of package manifests
10
10
  schedule:
11
11
  interval: "monthly"
12
- open-pull-requests-limit: 1
13
12
  cooldown:
14
13
  default-days: 7
15
14
  - package-ecosystem: "github-actions"
16
15
  directory: "/"
17
16
  schedule:
18
17
  interval: "monthly"
19
- open-pull-requests-limit: 1
20
18
  cooldown:
21
19
  default-days: 7
@@ -36,7 +36,7 @@ jobs:
36
36
  enable-cache: true
37
37
 
38
38
  - name: Setup Python
39
- run: uv python install 3.9
39
+ run: uv python install 3.10
40
40
 
41
41
  - name: Install development dependencies
42
42
  run: make install-dev
@@ -11,7 +11,7 @@ jobs:
11
11
  strategy:
12
12
  fail-fast: false
13
13
  matrix:
14
- python-version: ['3.9', '3.10', '3.11', '3.12']
14
+ python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
15
15
 
16
16
  name: Python ${{ matrix.python-version }}
17
17
 
@@ -33,7 +33,7 @@ jobs:
33
33
  - run: make lint
34
34
 
35
35
  - run: make coverage
36
- if: github.ref != 'refs/heads/master'
36
+ if: github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags/')
37
37
 
38
38
  - run: make coverage-master
39
- if: github.ref == 'refs/heads/master'
39
+ if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')
@@ -24,7 +24,7 @@ jobs:
24
24
  enable-cache: false # Disable cache for release builds to prevent cache poisoning
25
25
 
26
26
  - name: Setup python
27
- run: uv python install 3.9
27
+ run: uv python install 3.10
28
28
 
29
29
  - name: Build package
30
30
  run: uv build
@@ -34,6 +34,6 @@ jobs:
34
34
  private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
35
35
 
36
36
 
37
- - uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
37
+ - uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97 # v6.2.0
38
38
  env:
39
39
  GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
@@ -21,7 +21,7 @@ jobs:
21
21
  enable-cache: true
22
22
 
23
23
  - name: Setup python
24
- run: uv python install 3.9
24
+ run: uv python install 3.10
25
25
 
26
26
  - run: make install-docs
27
27
 
@@ -25,7 +25,7 @@ jobs:
25
25
  uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
26
26
 
27
27
  - name: Setup python
28
- run: uv python install 3.12
28
+ run: uv python install 3.10
29
29
 
30
30
  - name: Install dependencies
31
31
  run: make install-cloudformation-update
@@ -45,7 +45,7 @@ jobs:
45
45
  private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
46
46
 
47
47
  - name: Create Pull Request
48
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
48
+ uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
49
49
  with:
50
50
  token: ${{ steps.app-token.outputs.token }}
51
51
  commit-message: "Update CloudFormation actions"
@@ -8,7 +8,7 @@ formats: all
8
8
  build:
9
9
  os: ubuntu-22.04
10
10
  tools:
11
- python: "3.9"
11
+ python: "3.10"
12
12
 
13
13
  python:
14
14
  install:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycfmodel
3
- Version: 2.0.1
3
+ Version: 2.1.0
4
4
  Summary: A python model for Cloud Formation scripts
5
5
  Author-email: Skyscanner Security <security@skyscanner.net>
6
6
  Project-URL: Homepage, https://github.com/Skyscanner/pycfmodel
@@ -8,14 +8,14 @@ Project-URL: Repository, https://github.com/Skyscanner/pycfmodel
8
8
  Project-URL: Bug Tracker, https://github.com/Skyscanner/pycfmodel/issues
9
9
  Project-URL: Documentation, https://pycfmodel.readthedocs.io
10
10
  Project-URL: Changelog, https://github.com/Skyscanner/pycfmodel/releases
11
- Requires-Python: >=3.9.0
11
+ Requires-Python: >=3.10.0
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE.md
14
14
  Requires-Dist: pydantic~=2.7
15
15
  Provides-Extra: dev
16
- Requires-Dist: black>=22.1.0; extra == "dev"
16
+ Requires-Dist: black>=26.3.1; extra == "dev"
17
17
  Requires-Dist: isort>=5.4.2; extra == "dev"
18
- Requires-Dist: pytest>=6.0.1; extra == "dev"
18
+ Requires-Dist: pytest>=9.0.3; extra == "dev"
19
19
  Requires-Dist: pytest-cov>=2.10.1; extra == "dev"
20
20
  Requires-Dist: pytest-repeat==0.9.3; extra == "dev"
21
21
  Requires-Dist: ruff; extra == "dev"