pycfmodel 1.2.0__tar.gz → 2.0.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.
- pycfmodel-2.0.0/.flake8 +5 -0
- pycfmodel-2.0.0/.github/dependabot.yml +21 -0
- pycfmodel-2.0.0/.github/pull_request_template.md +8 -0
- pycfmodel-2.0.0/.github/release-drafter.yml +22 -0
- pycfmodel-2.0.0/.github/workflows/copilot-setup-steps.yml +42 -0
- pycfmodel-2.0.0/.github/workflows/lint-and-test.yml +39 -0
- pycfmodel-2.0.0/.github/workflows/pypi-release.yml +37 -0
- pycfmodel-2.0.0/.github/workflows/release-drafter.yml +39 -0
- pycfmodel-2.0.0/.github/workflows/test-docs.yml +28 -0
- pycfmodel-2.0.0/.github/workflows/update-cloudformation-actions.yml +58 -0
- pycfmodel-2.0.0/.github/workflows/zizmor.yml +25 -0
- pycfmodel-2.0.0/.gitignore +115 -0
- pycfmodel-2.0.0/.readthedocs.yaml +19 -0
- pycfmodel-2.0.0/CHANGELOG.md +344 -0
- pycfmodel-2.0.0/CLAUDE.md +153 -0
- pycfmodel-2.0.0/CODE_OF_CONDUCT.md +77 -0
- pycfmodel-2.0.0/CONTRIBUTING.md +14 -0
- pycfmodel-2.0.0/Makefile +60 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/PKG-INFO +14 -8
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/README.md +11 -5
- pycfmodel-2.0.0/docs/changelog.md +344 -0
- pycfmodel-2.0.0/docs/code_of_conduct.md +77 -0
- pycfmodel-2.0.0/docs/contributing.md +14 -0
- pycfmodel-2.0.0/docs/index.md +130 -0
- pycfmodel-2.0.0/docs/reference/cfmodel.md +3 -0
- pycfmodel-2.0.0/docs/reference/properties.md +15 -0
- pycfmodel-2.0.0/docs/reference/resources.md +32 -0
- pycfmodel-2.0.0/docs/stylesheets/extra.css +38 -0
- pycfmodel-2.0.0/mkdocs.yml +45 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/cloudformation_actions.py +94 -53
- pycfmodel-2.0.0/pycfmodel/model/resources/autoscaling_auto_scaling_group.py +507 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/cloudwatch_alarm.py +150 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/dynamodb_table.py +330 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/ec2_vpc_endpoint_policy.py +24 -1
- pycfmodel-2.0.0/pycfmodel/model/resources/elbv2_listener.py +241 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/elbv2_target_group.py +128 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/es_domain.py +184 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/iam_instance_profile.py +45 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/iam_user.py +24 -6
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/kms_key.py +2 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/opensearch_domain.py +206 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/route53_record_set.py +136 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/s3_bucket.py +926 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/sns_subscription.py +60 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/sns_topic.py +106 -0
- pycfmodel-2.0.0/pycfmodel/model/resources/sqs_queue.py +80 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/types.py +20 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/types.py +72 -1
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel.egg-info/PKG-INFO +14 -8
- pycfmodel-2.0.0/pycfmodel.egg-info/SOURCES.txt +133 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel.egg-info/requires.txt +3 -2
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pyproject.toml +7 -4
- pycfmodel-2.0.0/scripts/generate_cloudformation_actions_file.py +37 -0
- pycfmodel-2.0.0/scripts/generate_resource_from_schema.py +743 -0
- pycfmodel-2.0.0/tests/resources/properties/test_policy_document.py +362 -0
- pycfmodel-2.0.0/tests/resources/properties/test_principal.py +31 -0
- pycfmodel-2.0.0/tests/resources/properties/test_statement.py +224 -0
- pycfmodel-2.0.0/tests/resources/properties/test_statement_condition.py +681 -0
- pycfmodel-2.0.0/tests/resources/test_autoscaling_auto_scaling_group.py +251 -0
- pycfmodel-2.0.0/tests/resources/test_cloudwatch_alarm.py +132 -0
- pycfmodel-2.0.0/tests/resources/test_dynamodb_table.py +139 -0
- pycfmodel-2.0.0/tests/resources/test_ec2_vpc_endpoint_policy.py +61 -0
- pycfmodel-2.0.0/tests/resources/test_elbv2_listener.py +199 -0
- pycfmodel-2.0.0/tests/resources/test_elbv2_target_group.py +163 -0
- pycfmodel-2.0.0/tests/resources/test_es_domain.py +205 -0
- pycfmodel-2.0.0/tests/resources/test_generic_resoure.py +124 -0
- pycfmodel-2.0.0/tests/resources/test_iam_group.py +44 -0
- pycfmodel-2.0.0/tests/resources/test_iam_instance_profile.py +79 -0
- pycfmodel-2.0.0/tests/resources/test_iam_managed_policy.py +39 -0
- pycfmodel-2.0.0/tests/resources/test_iam_policy.py +36 -0
- pycfmodel-2.0.0/tests/resources/test_iam_role.py +85 -0
- pycfmodel-2.0.0/tests/resources/test_iam_user.py +48 -0
- pycfmodel-2.0.0/tests/resources/test_kms_key.py +190 -0
- pycfmodel-2.0.0/tests/resources/test_opensearch_domain.py +261 -0
- pycfmodel-2.0.0/tests/resources/test_rds_security_groups.py +45 -0
- pycfmodel-2.0.0/tests/resources/test_route53_record_set.py +164 -0
- pycfmodel-2.0.0/tests/resources/test_s3_bucket.py +65 -0
- pycfmodel-2.0.0/tests/resources/test_s3_bucket_policy.py +44 -0
- pycfmodel-2.0.0/tests/resources/test_security_group.py +27 -0
- pycfmodel-2.0.0/tests/resources/test_security_group_egress.py +68 -0
- pycfmodel-2.0.0/tests/resources/test_security_group_ingress.py +68 -0
- pycfmodel-2.0.0/tests/resources/test_sns_subscription.py +127 -0
- pycfmodel-2.0.0/tests/resources/test_sns_topic.py +83 -0
- pycfmodel-2.0.0/tests/resources/test_sns_topic_policy.py +49 -0
- pycfmodel-2.0.0/tests/resources/test_sqs_queue.py +84 -0
- pycfmodel-2.0.0/tests/resources/test_sqs_queue_policy.py +39 -0
- pycfmodel-2.0.0/tests/resources/test_wafv2_ip_set.py +96 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_resolver.py +3 -3
- pycfmodel-2.0.0/tests/test_resource_generator.py +404 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_types.py +142 -13
- pycfmodel-2.0.0/uv.lock +1595 -0
- pycfmodel-1.2.0/pycfmodel/model/resources/es_domain.py +0 -61
- pycfmodel-1.2.0/pycfmodel/model/resources/opensearch_domain.py +0 -61
- pycfmodel-1.2.0/pycfmodel/model/resources/s3_bucket.py +0 -70
- pycfmodel-1.2.0/pycfmodel.egg-info/SOURCES.txt +0 -59
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/LICENSE.md +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/__init__.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/action_expander.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/constants.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/base.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/cf_model.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/generic.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/parameter.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/generic_resource.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/iam_group.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/iam_managed_policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/iam_policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/iam_role.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/policy_document.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/property.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/security_group_egress_prop.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/security_group_ingress_prop.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/statement.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/statement_condition.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/tag.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/properties/types.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/resource.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/s3_bucket_policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/security_group.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/security_group_egress.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/security_group_ingress.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/sns_topic_policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/sqs_queue_policy.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/resources/wafv2_ip_set.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/model/utils.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/resolver.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel/utils.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel.egg-info/dependency_links.txt +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/pycfmodel.egg-info/top_level.txt +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/setup.cfg +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_action_expander.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_cf_model.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_constants.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_generic.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_parameter.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_regexs.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_resource.py +0 -0
- {pycfmodel-1.2.0 → pycfmodel-2.0.0}/tests/test_utils.py +0 -0
pycfmodel-2.0.0/.flake8
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# To get started with Dependabot version updates, you'll need to specify which
|
|
2
|
+
# package ecosystems to update and where the package manifests are located.
|
|
3
|
+
# Please see the documentation for all configuration options:
|
|
4
|
+
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
5
|
+
|
|
6
|
+
version: 2
|
|
7
|
+
updates:
|
|
8
|
+
- package-ecosystem: "pip" # See documentation for possible values
|
|
9
|
+
directory: "/" # Location of package manifests
|
|
10
|
+
schedule:
|
|
11
|
+
interval: "monthly"
|
|
12
|
+
open-pull-requests-limit: 1
|
|
13
|
+
cooldown:
|
|
14
|
+
default-days: 7
|
|
15
|
+
- package-ecosystem: "github-actions"
|
|
16
|
+
directory: "/"
|
|
17
|
+
schedule:
|
|
18
|
+
interval: "monthly"
|
|
19
|
+
open-pull-requests-limit: 1
|
|
20
|
+
cooldown:
|
|
21
|
+
default-days: 7
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name-template: 'v$RESOLVED_VERSION'
|
|
2
|
+
tag-template: 'v$RESOLVED_VERSION'
|
|
3
|
+
change-template: '- $TITLE @$AUTHOR (#$NUMBER)'
|
|
4
|
+
change-title-escapes: '\<*_&' # You can add # and @ to disable mentions, and add ` to disable code blocks.
|
|
5
|
+
version-resolver:
|
|
6
|
+
major:
|
|
7
|
+
labels:
|
|
8
|
+
- 'major'
|
|
9
|
+
minor:
|
|
10
|
+
labels:
|
|
11
|
+
- 'minor'
|
|
12
|
+
patch:
|
|
13
|
+
labels:
|
|
14
|
+
- 'patch'
|
|
15
|
+
default: patch
|
|
16
|
+
exclude-labels:
|
|
17
|
+
- 'skip-changelog'
|
|
18
|
+
- 'dependencies'
|
|
19
|
+
template: |
|
|
20
|
+
## Changes
|
|
21
|
+
|
|
22
|
+
$CHANGES
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: "Copilot Setup Steps"
|
|
2
|
+
|
|
3
|
+
# Automatically run the setup steps when they are changed to allow for easy validation, and
|
|
4
|
+
# allow manual testing through the repository's "Actions" tab
|
|
5
|
+
on:
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
push:
|
|
8
|
+
paths:
|
|
9
|
+
- .github/workflows/copilot-setup-steps.yml
|
|
10
|
+
pull_request:
|
|
11
|
+
paths:
|
|
12
|
+
- .github/workflows/copilot-setup-steps.yml
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.
|
|
16
|
+
copilot-setup-steps:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
|
|
19
|
+
# Set the permissions to the lowest permissions possible needed for your steps.
|
|
20
|
+
# Copilot will be given its own token for its operations.
|
|
21
|
+
permissions:
|
|
22
|
+
# If you want to clone the repository as part of your setup steps, for example to install dependencies, you'll need the `contents: read` permission. If you don't clone the repository in your setup steps, Copilot will do this for you automatically after the steps complete.
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
# You can define any steps you want, and they will run before the agent starts.
|
|
26
|
+
# If you do not check out your code, Copilot will do this for you.
|
|
27
|
+
steps:
|
|
28
|
+
- name: Checkout code
|
|
29
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
30
|
+
with:
|
|
31
|
+
persist-credentials: false
|
|
32
|
+
|
|
33
|
+
- name: Install uv
|
|
34
|
+
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
|
|
35
|
+
with:
|
|
36
|
+
enable-cache: true
|
|
37
|
+
|
|
38
|
+
- name: Setup Python
|
|
39
|
+
run: uv python install 3.9
|
|
40
|
+
|
|
41
|
+
- name: Install development dependencies
|
|
42
|
+
run: make install-dev
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Lint & Test
|
|
2
|
+
|
|
3
|
+
on: push
|
|
4
|
+
|
|
5
|
+
permissions: {}
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
strategy:
|
|
12
|
+
fail-fast: false
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ['3.9', '3.10', '3.11', '3.12']
|
|
15
|
+
|
|
16
|
+
name: Python ${{ matrix.python-version }}
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
20
|
+
with:
|
|
21
|
+
persist-credentials: false
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
|
|
25
|
+
with:
|
|
26
|
+
enable-cache: true
|
|
27
|
+
|
|
28
|
+
- name: Setup python
|
|
29
|
+
run: uv python install ${{ matrix.python-version }}
|
|
30
|
+
|
|
31
|
+
- run: make install-dev
|
|
32
|
+
|
|
33
|
+
- run: make lint
|
|
34
|
+
|
|
35
|
+
- run: make coverage
|
|
36
|
+
if: github.ref != 'refs/heads/master'
|
|
37
|
+
|
|
38
|
+
- run: make coverage-master
|
|
39
|
+
if: github.ref == 'refs/heads/master'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
name: PyPI release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
name: Upload release to PyPI
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
environment:
|
|
12
|
+
name: pypi
|
|
13
|
+
url: https://pypi.org/p/pycfmodel
|
|
14
|
+
permissions:
|
|
15
|
+
id-token: write
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
18
|
+
with:
|
|
19
|
+
persist-credentials: false
|
|
20
|
+
|
|
21
|
+
- name: Install uv
|
|
22
|
+
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
|
|
23
|
+
with:
|
|
24
|
+
enable-cache: false # Disable cache for release builds to prevent cache poisoning
|
|
25
|
+
|
|
26
|
+
- name: Setup python
|
|
27
|
+
run: uv python install 3.9
|
|
28
|
+
|
|
29
|
+
- name: Build package
|
|
30
|
+
run: uv build
|
|
31
|
+
|
|
32
|
+
- name: Publish distribution 📦 to PyPI
|
|
33
|
+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|
|
34
|
+
with:
|
|
35
|
+
# zizmor: ignore[use-trusted-publishing] https://github.com/pypi/warehouse/issues/17700
|
|
36
|
+
user: __token__
|
|
37
|
+
password: ${{ secrets.pypi_publish_token }}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Release Drafter
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# branches to consider in the event; optional, defaults to all
|
|
6
|
+
branches:
|
|
7
|
+
- master
|
|
8
|
+
# pull_request event is required only for autolabeler
|
|
9
|
+
pull_request:
|
|
10
|
+
# Only following types are handled by the action, but one can default to all as well
|
|
11
|
+
types: [opened, reopened, synchronize]
|
|
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]
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
update_release_draft:
|
|
21
|
+
permissions:
|
|
22
|
+
# write permission is required to create a github release
|
|
23
|
+
contents: write
|
|
24
|
+
# write permission is required for autolabeler
|
|
25
|
+
# otherwise, read permission is required at least
|
|
26
|
+
pull-requests: write
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
# Drafts your next Release notes as Pull Requests are merged into "master"
|
|
30
|
+
- uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
|
31
|
+
id: app-token
|
|
32
|
+
with:
|
|
33
|
+
app-id: ${{ vars.GH_APP_ID }}
|
|
34
|
+
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
- uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
|
|
38
|
+
env:
|
|
39
|
+
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Test Docs
|
|
2
|
+
|
|
3
|
+
on: push
|
|
4
|
+
|
|
5
|
+
permissions: {}
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
name: Test Docs
|
|
12
|
+
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
15
|
+
with:
|
|
16
|
+
persist-credentials: false
|
|
17
|
+
|
|
18
|
+
- name: Install uv
|
|
19
|
+
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
|
|
20
|
+
with:
|
|
21
|
+
enable-cache: true
|
|
22
|
+
|
|
23
|
+
- name: Setup python
|
|
24
|
+
run: uv python install 3.9
|
|
25
|
+
|
|
26
|
+
- run: make install-docs
|
|
27
|
+
|
|
28
|
+
- run: make test-docs
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Update CloudFormation Actions
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
# Run weekly on Monday at 9:00 UTC
|
|
6
|
+
- cron: '0 9 * * 1'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions: {}
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
update-cloudformation-actions:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: write
|
|
17
|
+
pull-requests: write
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
21
|
+
with:
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
|
|
26
|
+
|
|
27
|
+
- name: Setup python
|
|
28
|
+
run: uv python install 3.12
|
|
29
|
+
|
|
30
|
+
- name: Install dependencies
|
|
31
|
+
run: make install-cloudformation-update
|
|
32
|
+
|
|
33
|
+
- name: Generate CloudFormation actions file
|
|
34
|
+
run: make cloudformation-update
|
|
35
|
+
|
|
36
|
+
- name: Get current date
|
|
37
|
+
id: date
|
|
38
|
+
run: echo "date=$(date +'%Y-%m-%d')" >> "$GITHUB_OUTPUT"
|
|
39
|
+
|
|
40
|
+
- name: Generate GitHub App token
|
|
41
|
+
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
|
42
|
+
id: app-token
|
|
43
|
+
with:
|
|
44
|
+
app-id: ${{ vars.GH_APP_ID }}
|
|
45
|
+
private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
|
|
46
|
+
|
|
47
|
+
- name: Create Pull Request
|
|
48
|
+
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
|
|
49
|
+
with:
|
|
50
|
+
token: ${{ steps.app-token.outputs.token }}
|
|
51
|
+
commit-message: "Update CloudFormation actions"
|
|
52
|
+
title: "Update CloudFormation actions (${{ steps.date.outputs.date }})"
|
|
53
|
+
body: |
|
|
54
|
+
This PR updates the CloudFormation actions file with the latest actions from AWS.
|
|
55
|
+
|
|
56
|
+
Auto-generated by the update-cloudformation-actions workflow.
|
|
57
|
+
branch: update-cloudformation-actions-${{ steps.date.outputs.date }}
|
|
58
|
+
delete-branch: true
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
name: GitHub Actions Security Analysis with zizmor 🌈
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- "master"
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- "**"
|
|
10
|
+
|
|
11
|
+
permissions: {}
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
zizmor:
|
|
15
|
+
runs-on: ubuntu-24.04-2cores-tools-public
|
|
16
|
+
permissions:
|
|
17
|
+
security-events: write
|
|
18
|
+
steps:
|
|
19
|
+
- name: Checkout repository
|
|
20
|
+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
|
21
|
+
with:
|
|
22
|
+
persist-credentials: false
|
|
23
|
+
|
|
24
|
+
- name: Run zizmor 🌈
|
|
25
|
+
uses: zizmorcore/zizmor-action@e639db99335bc9038abc0e066dfcd72e23d26fb4 # v0.3.0
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
.vscode/
|
|
2
|
+
.idea/
|
|
3
|
+
|
|
4
|
+
# Byte-compiled / optimized / DLL files
|
|
5
|
+
__pycache__/
|
|
6
|
+
*.py[cod]
|
|
7
|
+
*$py.class
|
|
8
|
+
|
|
9
|
+
# C extensions
|
|
10
|
+
*.so
|
|
11
|
+
|
|
12
|
+
# Distribution / packaging
|
|
13
|
+
.Python
|
|
14
|
+
build/
|
|
15
|
+
develop-eggs/
|
|
16
|
+
dist/
|
|
17
|
+
downloads/
|
|
18
|
+
eggs/
|
|
19
|
+
.eggs/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
sdist/
|
|
24
|
+
var/
|
|
25
|
+
wheels/
|
|
26
|
+
*.egg-info/
|
|
27
|
+
.installed.cfg
|
|
28
|
+
*.egg
|
|
29
|
+
MANIFEST
|
|
30
|
+
|
|
31
|
+
# PyInstaller
|
|
32
|
+
# Usually these files are written by a python script from a template
|
|
33
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
.hypothesis/
|
|
51
|
+
.pytest_cache/
|
|
52
|
+
|
|
53
|
+
# Translations
|
|
54
|
+
*.mo
|
|
55
|
+
*.pot
|
|
56
|
+
|
|
57
|
+
# Django stuff:
|
|
58
|
+
*.log
|
|
59
|
+
local_settings.py
|
|
60
|
+
db.sqlite3
|
|
61
|
+
|
|
62
|
+
# Flask stuff:
|
|
63
|
+
instance/
|
|
64
|
+
.webassets-cache
|
|
65
|
+
|
|
66
|
+
# Scrapy stuff:
|
|
67
|
+
.scrapy
|
|
68
|
+
|
|
69
|
+
# Sphinx documentation
|
|
70
|
+
docs/_build/
|
|
71
|
+
|
|
72
|
+
# PyBuilder
|
|
73
|
+
target/
|
|
74
|
+
|
|
75
|
+
# Jupyter Notebook
|
|
76
|
+
.ipynb_checkpoints
|
|
77
|
+
|
|
78
|
+
# pyenv
|
|
79
|
+
.python-version
|
|
80
|
+
|
|
81
|
+
# celery beat schedule file
|
|
82
|
+
celerybeat-schedule
|
|
83
|
+
|
|
84
|
+
# SageMath parsed files
|
|
85
|
+
*.sage.py
|
|
86
|
+
|
|
87
|
+
# Environments
|
|
88
|
+
.env
|
|
89
|
+
.venv
|
|
90
|
+
env/
|
|
91
|
+
venv/
|
|
92
|
+
ENV/
|
|
93
|
+
env.bak/
|
|
94
|
+
venv.bak/
|
|
95
|
+
|
|
96
|
+
# Spyder project settings
|
|
97
|
+
.spyderproject
|
|
98
|
+
.spyproject
|
|
99
|
+
|
|
100
|
+
# Rope project settings
|
|
101
|
+
.ropeproject
|
|
102
|
+
|
|
103
|
+
# mkdocs documentation
|
|
104
|
+
/site
|
|
105
|
+
|
|
106
|
+
# MkDocs local builds
|
|
107
|
+
site/
|
|
108
|
+
|
|
109
|
+
# mypy
|
|
110
|
+
.mypy_cache/
|
|
111
|
+
|
|
112
|
+
.project
|
|
113
|
+
|
|
114
|
+
# Snyk Code
|
|
115
|
+
.dccache
|