pycfmodel 2.1.0__tar.gz → 2.1.2__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 (138) hide show
  1. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/dependabot.yml +7 -5
  2. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/copilot-setup-steps.yml +2 -2
  3. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/lint-and-test.yml +2 -2
  4. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/pypi-release.yml +3 -3
  5. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/release-drafter.yml +7 -8
  6. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/test-docs.yml +2 -2
  7. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/update-cloudformation-actions.yml +6 -6
  8. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/workflows/zizmor.yml +2 -2
  9. pycfmodel-2.1.2/Makefile +60 -0
  10. {pycfmodel-2.1.0/pycfmodel.egg-info → pycfmodel-2.1.2}/PKG-INFO +4 -4
  11. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/cloudformation_actions.py +1026 -6
  12. {pycfmodel-2.1.0 → pycfmodel-2.1.2/pycfmodel.egg-info}/PKG-INFO +4 -4
  13. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel.egg-info/SOURCES.txt +2 -0
  14. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel.egg-info/requires.txt +3 -3
  15. pycfmodel-2.1.2/pycfmodel.egg-info/scm_file_list.json +132 -0
  16. pycfmodel-2.1.2/pycfmodel.egg-info/scm_version.json +8 -0
  17. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pyproject.toml +7 -3
  18. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/properties/test_policy_document.py +3 -0
  19. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_action_expander.py +28 -0
  20. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/uv.lock +202 -208
  21. pycfmodel-2.1.0/Makefile +0 -60
  22. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.flake8 +0 -0
  23. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/pull_request_template.md +0 -0
  24. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.github/release-drafter.yml +0 -0
  25. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.gitignore +0 -0
  26. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/.readthedocs.yaml +0 -0
  27. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/CHANGELOG.md +0 -0
  28. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/CLAUDE.md +0 -0
  29. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/CODE_OF_CONDUCT.md +0 -0
  30. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/CONTRIBUTING.md +0 -0
  31. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/LICENSE.md +0 -0
  32. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/README.md +0 -0
  33. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/changelog.md +0 -0
  34. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/code_of_conduct.md +0 -0
  35. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/contributing.md +0 -0
  36. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/index.md +0 -0
  37. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/reference/cfmodel.md +0 -0
  38. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/reference/properties.md +0 -0
  39. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/reference/resources.md +0 -0
  40. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/docs/stylesheets/extra.css +0 -0
  41. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/mkdocs.yml +0 -0
  42. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/__init__.py +0 -0
  43. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/action_expander.py +0 -0
  44. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/constants.py +0 -0
  45. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/base.py +0 -0
  46. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/cf_model.py +0 -0
  47. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/generic.py +0 -0
  48. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/parameter.py +0 -0
  49. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/autoscaling_auto_scaling_group.py +0 -0
  50. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/cloudwatch_alarm.py +0 -0
  51. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/dynamodb_table.py +0 -0
  52. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/ec2_vpc_endpoint_policy.py +0 -0
  53. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/elbv2_listener.py +0 -0
  54. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/elbv2_target_group.py +0 -0
  55. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/es_domain.py +0 -0
  56. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/generic_resource.py +0 -0
  57. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_group.py +0 -0
  58. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_instance_profile.py +0 -0
  59. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_managed_policy.py +0 -0
  60. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_policy.py +0 -0
  61. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_role.py +0 -0
  62. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/iam_user.py +0 -0
  63. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/kms_key.py +0 -0
  64. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/opensearch_domain.py +0 -0
  65. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/policy.py +0 -0
  66. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/policy_document.py +0 -0
  67. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/property.py +0 -0
  68. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/security_group_egress_prop.py +0 -0
  69. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/security_group_ingress_prop.py +0 -0
  70. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/statement.py +0 -0
  71. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/statement_condition.py +0 -0
  72. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/tag.py +0 -0
  73. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/properties/types.py +0 -0
  74. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/resource.py +0 -0
  75. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/route53_record_set.py +0 -0
  76. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/s3_bucket.py +0 -0
  77. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/s3_bucket_policy.py +0 -0
  78. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/security_group.py +0 -0
  79. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/security_group_egress.py +0 -0
  80. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/security_group_ingress.py +0 -0
  81. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/sns_subscription.py +0 -0
  82. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/sns_topic.py +0 -0
  83. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/sns_topic_policy.py +0 -0
  84. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/sqs_queue.py +0 -0
  85. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/sqs_queue_policy.py +0 -0
  86. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/types.py +0 -0
  87. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/resources/wafv2_ip_set.py +0 -0
  88. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/types.py +0 -0
  89. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/model/utils.py +0 -0
  90. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/resolver.py +0 -0
  91. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel/utils.py +0 -0
  92. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel.egg-info/dependency_links.txt +0 -0
  93. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/pycfmodel.egg-info/top_level.txt +0 -0
  94. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/scripts/generate_cloudformation_actions_file.py +0 -0
  95. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/scripts/generate_resource_from_schema.py +0 -0
  96. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/setup.cfg +0 -0
  97. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/properties/test_principal.py +0 -0
  98. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/properties/test_statement.py +0 -0
  99. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/properties/test_statement_condition.py +0 -0
  100. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_autoscaling_auto_scaling_group.py +0 -0
  101. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_cloudwatch_alarm.py +0 -0
  102. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_dynamodb_table.py +0 -0
  103. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_ec2_vpc_endpoint_policy.py +0 -0
  104. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_elbv2_listener.py +0 -0
  105. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_elbv2_target_group.py +0 -0
  106. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_es_domain.py +0 -0
  107. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_generic_resoure.py +0 -0
  108. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_group.py +0 -0
  109. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_instance_profile.py +0 -0
  110. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_managed_policy.py +0 -0
  111. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_policy.py +0 -0
  112. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_role.py +0 -0
  113. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_iam_user.py +0 -0
  114. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_kms_key.py +0 -0
  115. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_opensearch_domain.py +0 -0
  116. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_rds_security_groups.py +0 -0
  117. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_route53_record_set.py +0 -0
  118. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_s3_bucket.py +0 -0
  119. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_s3_bucket_policy.py +0 -0
  120. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_security_group.py +0 -0
  121. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_security_group_egress.py +0 -0
  122. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_security_group_ingress.py +0 -0
  123. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_sns_subscription.py +0 -0
  124. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_sns_topic.py +0 -0
  125. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_sns_topic_policy.py +0 -0
  126. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_sqs_queue.py +0 -0
  127. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_sqs_queue_policy.py +0 -0
  128. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/resources/test_wafv2_ip_set.py +0 -0
  129. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_cf_model.py +0 -0
  130. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_constants.py +0 -0
  131. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_generic.py +0 -0
  132. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_parameter.py +0 -0
  133. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_regexs.py +0 -0
  134. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_resolver.py +0 -0
  135. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_resource.py +0 -0
  136. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_resource_generator.py +0 -0
  137. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_types.py +0 -0
  138. {pycfmodel-2.1.0 → pycfmodel-2.1.2}/tests/test_utils.py +0 -0
@@ -5,15 +5,17 @@
5
5
 
6
6
  version: 2
7
7
  updates:
8
- - package-ecosystem: "pip" # See documentation for possible values
8
+ - package-ecosystem: "uv" # See documentation for possible values
9
9
  directory: "/" # Location of package manifests
10
10
  schedule:
11
- interval: "monthly"
11
+ interval: "weekly"
12
+ open-pull-requests-limit: 10
12
13
  cooldown:
13
- default-days: 7
14
+ default-days: 30
14
15
  - package-ecosystem: "github-actions"
15
16
  directory: "/"
16
17
  schedule:
17
- interval: "monthly"
18
+ interval: "weekly"
19
+ open-pull-requests-limit: 10
18
20
  cooldown:
19
- default-days: 7
21
+ default-days: 30
@@ -26,12 +26,12 @@ jobs:
26
26
  # If you do not check out your code, Copilot will do this for you.
27
27
  steps:
28
28
  - name: Checkout code
29
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
29
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
30
30
  with:
31
31
  persist-credentials: false
32
32
 
33
33
  - name: Install uv
34
- uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
34
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
35
35
  with:
36
36
  enable-cache: true
37
37
 
@@ -16,12 +16,12 @@ jobs:
16
16
  name: Python ${{ matrix.python-version }}
17
17
 
18
18
  steps:
19
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
19
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
20
20
  with:
21
21
  persist-credentials: false
22
22
 
23
23
  - name: Install uv
24
- uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
24
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
25
25
  with:
26
26
  enable-cache: true
27
27
 
@@ -14,12 +14,12 @@ jobs:
14
14
  permissions:
15
15
  id-token: write
16
16
  steps:
17
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
17
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
18
18
  with:
19
19
  persist-credentials: false
20
20
 
21
21
  - name: Install uv
22
- uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
22
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
23
23
  with:
24
24
  enable-cache: false # Disable cache for release builds to prevent cache poisoning
25
25
 
@@ -30,7 +30,7 @@ jobs:
30
30
  run: uv build
31
31
 
32
32
  - name: Publish distribution 📦 to PyPI
33
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
33
+ uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
34
34
  with:
35
35
  # zizmor: ignore[use-trusted-publishing] https://github.com/pypi/warehouse/issues/17700
36
36
  user: __token__
@@ -6,12 +6,12 @@ on:
6
6
  branches:
7
7
  - master
8
8
  # pull_request event is required only for autolabeler
9
- pull_request:
9
+ # pull_request:
10
10
  # Only following types are handled by the action, but one can default to all as well
11
- types: [opened, reopened, synchronize]
11
+ # types: [opened, reopened, synchronize]
12
12
  # zizmor: ignore[dangerous-triggers] pull_request_target event is required for autolabeler to support PRs from forks
13
- pull_request_target:
14
- types: [opened, reopened, synchronize]
13
+ # pull_request_target:
14
+ # types: [opened, reopened, synchronize]
15
15
 
16
16
  permissions:
17
17
  contents: read
@@ -23,17 +23,16 @@ jobs:
23
23
  contents: write
24
24
  # write permission is required for autolabeler
25
25
  # otherwise, read permission is required at least
26
- pull-requests: write
26
+ pull-requests: read
27
27
  runs-on: ubuntu-latest
28
28
  steps:
29
29
  # Drafts your next Release notes as Pull Requests are merged into "master"
30
- - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
30
+ - uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
31
31
  id: app-token
32
32
  with:
33
33
  app-id: ${{ vars.GH_APP_ID }}
34
34
  private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
35
35
 
36
-
37
- - uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97 # v6.2.0
36
+ - uses: release-drafter/release-drafter@4d75298e00d9e34c483e5ff8c68d0ea1c1940c1e # v7.5.1
38
37
  env:
39
38
  GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
@@ -11,12 +11,12 @@ jobs:
11
11
  name: Test Docs
12
12
 
13
13
  steps:
14
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
14
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
15
15
  with:
16
16
  persist-credentials: false
17
17
 
18
18
  - name: Install uv
19
- uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
19
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
20
20
  with:
21
21
  enable-cache: true
22
22
 
@@ -2,8 +2,8 @@ name: Update CloudFormation Actions
2
2
 
3
3
  on:
4
4
  schedule:
5
- # Run weekly on Monday at 9:00 UTC
6
- - cron: '0 9 * * 1'
5
+ # Run weekly on Monday to Friday at 9:00 UTC
6
+ - cron: '0 9 * * 1-5'
7
7
  workflow_dispatch:
8
8
 
9
9
  permissions: {}
@@ -17,12 +17,12 @@ jobs:
17
17
  pull-requests: write
18
18
 
19
19
  steps:
20
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
20
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
21
21
  with:
22
22
  persist-credentials: false
23
23
 
24
24
  - name: Install uv
25
- uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
25
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
26
26
 
27
27
  - name: Setup python
28
28
  run: uv python install 3.10
@@ -38,14 +38,14 @@ jobs:
38
38
  run: echo "date=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
39
39
 
40
40
  - name: Generate GitHub App token
41
- uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
41
+ uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
42
42
  id: app-token
43
43
  with:
44
44
  app-id: ${{ vars.GH_APP_ID }}
45
45
  private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
46
46
 
47
47
  - name: Create Pull Request
48
- uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
48
+ uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v8.1.1
49
49
  with:
50
50
  token: ${{ steps.app-token.outputs.token }}
51
51
  commit-message: "Update CloudFormation actions"
@@ -17,9 +17,9 @@ jobs:
17
17
  security-events: write
18
18
  steps:
19
19
  - name: Checkout repository
20
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
20
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
21
21
  with:
22
22
  persist-credentials: false
23
23
 
24
24
  - name: Run zizmor 🌈
25
- uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0
25
+ uses: zizmorcore/zizmor-action@192e21d79ab29983730a13d1382995c2307fbcaa # v0.5.7
@@ -0,0 +1,60 @@
1
+ install:
2
+ uv sync --no-dev --locked
3
+
4
+ install-dev:
5
+ uv sync --all-extras --locked
6
+
7
+ install-docs:
8
+ uv sync --extra docs --locked
9
+
10
+ install-cloudformation-update:
11
+ uv sync --extra cloudformation-update --locked
12
+
13
+ cloudformation-update:
14
+ uv run --locked python scripts/generate_cloudformation_actions_file.py
15
+
16
+ fix:
17
+ uv run --locked ruff check --fix .
18
+
19
+ format:
20
+ uv run --locked isort .
21
+ uv run --locked black .
22
+
23
+ lint:
24
+ uv run --locked isort --check-only .
25
+ uv run --locked black --check .
26
+ uv run --locked ruff check .
27
+
28
+ unit:
29
+ uv run --locked pytest -svvv tests
30
+
31
+ coverage:
32
+ uv run --locked coverage run --source=pycfmodel --branch -m pytest tests/ --junitxml=build/test.xml -v
33
+ uv run --locked coverage report
34
+ uv run --locked coverage xml -i -o build/coverage.xml
35
+ uv run --locked coverage html
36
+
37
+ coverage-master:
38
+ uv run --locked coverage run --source=pycfmodel --branch -m pytest tests/ --junitxml=build/test.xml -v -m "not actions"
39
+ uv run --locked coverage report
40
+ uv run --locked coverage xml -i -o build/coverage.xml
41
+ uv run --locked coverage html
42
+
43
+ coverage-html:
44
+ uv run --locked coverage run --source=pycfmodel --branch -m pytest tests/ --junitxml=build/test.xml -v
45
+ uv run --locked coverage html
46
+ open htmlcov/index.html
47
+
48
+ test: lint unit
49
+
50
+ test-docs:
51
+ uv run --locked mkdocs build --strict
52
+
53
+ lock:
54
+ uv lock --default-index https://pypi.org/simple
55
+
56
+ lock-upgrade:
57
+ uv lock --upgrade --default-index https://pypi.org/simple
58
+
59
+ .PHONY: install install-dev install-docs install-cloudformation-update cloudformation-update \
60
+ fix format lint unit coverage coverage-master coverage-html test test-docs lock lock-upgrade
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pycfmodel
3
- Version: 2.1.0
3
+ Version: 2.1.2
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
@@ -17,14 +17,14 @@ Requires-Dist: black>=26.3.1; extra == "dev"
17
17
  Requires-Dist: isort>=5.4.2; extra == "dev"
18
18
  Requires-Dist: pytest>=9.0.3; extra == "dev"
19
19
  Requires-Dist: pytest-cov>=2.10.1; extra == "dev"
20
- Requires-Dist: pytest-repeat==0.9.3; extra == "dev"
20
+ Requires-Dist: pytest-repeat==0.9.4; extra == "dev"
21
21
  Requires-Dist: ruff; extra == "dev"
22
22
  Provides-Extra: docs
23
23
  Requires-Dist: AutoMacDoc==0.3; extra == "docs"
24
24
  Requires-Dist: livereload==2.7.1; extra == "docs"
25
- Requires-Dist: mkdocs-material==9.6.11; extra == "docs"
25
+ Requires-Dist: mkdocs-material==9.7.6; extra == "docs"
26
26
  Requires-Dist: mkdocs==1.6.1; extra == "docs"
27
- Requires-Dist: mkdocstrings==0.28.3; extra == "docs"
27
+ Requires-Dist: mkdocstrings==1.0.4; extra == "docs"
28
28
  Provides-Extra: cloudformation-update
29
29
  Requires-Dist: httpx>=0.14.2; extra == "cloudformation-update"
30
30
  Dynamic: license-file