pulumi-extra 0.1.3__tar.gz → 0.1.5__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 (76) hide show
  1. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.devcontainer/devcontainer.json +1 -1
  2. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.github/workflows/ci.yaml +9 -12
  3. pulumi_extra-0.1.5/.github/workflows/docs.yaml +41 -0
  4. pulumi_extra-0.1.5/.github/workflows/prepare-release.yaml +51 -0
  5. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.github/workflows/release.yaml +16 -14
  6. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.pre-commit-config.yaml +9 -14
  7. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/Makefile +5 -0
  8. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/PKG-INFO +5 -6
  9. pulumi_extra-0.1.5/README.md +7 -0
  10. pulumi_extra-0.1.5/docs/api-references/contrib/aws.md +3 -0
  11. pulumi_extra-0.1.5/docs/api-references/contrib/gcp.md +3 -0
  12. pulumi_extra-0.1.5/docs/api-references/index.md +15 -0
  13. pulumi_extra-0.1.5/docs/index.md +1 -0
  14. pulumi_extra-0.1.5/mkdocs.yaml +38 -0
  15. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pyproject.toml +12 -5
  16. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/test_output.py +1 -1
  17. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/test_resource_.py +1 -1
  18. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/test_stack_reference.py +2 -2
  19. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/uv.lock +583 -34
  20. pulumi_extra-0.1.3/README.md +0 -8
  21. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.devcontainer/Dockerfile +0 -0
  22. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.devcontainer/docker-compose.devcontainer.yaml +0 -0
  23. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.devcontainer/onCreateCommand.sh +0 -0
  24. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.devcontainer/postAttachCommand.sh +0 -0
  25. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.editorconfig +0 -0
  26. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.gitattributes +0 -0
  27. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.github/dependabot.yaml +0 -0
  28. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.gitignore +0 -0
  29. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.python-version +0 -0
  30. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.vscode/extensions.json +0 -0
  31. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/.vscode/settings.json +0 -0
  32. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/LICENSE +0 -0
  33. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/noxfile.py +0 -0
  34. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/__init__.py +0 -0
  35. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/__init__.py +0 -0
  36. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/__init__.py +0 -0
  37. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/autotag.py +0 -0
  38. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/common.py +0 -0
  39. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/__init__.py +0 -0
  40. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/require_description.py +0 -0
  41. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/require_tags.py +0 -0
  42. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/__init__.py +0 -0
  43. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/autolabel.py +0 -0
  44. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/common.py +0 -0
  45. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/__init__.py +0 -0
  46. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/require_description.py +0 -0
  47. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/require_labels.py +0 -0
  48. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/errors.py +0 -0
  49. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/output.py +0 -0
  50. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/py.typed +0 -0
  51. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/resource_.py +0 -0
  52. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/stack_reference.py +0 -0
  53. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/transforms/__init__.py +0 -0
  54. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/transforms/invoke.py +0 -0
  55. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/transforms/resource_.py +0 -0
  56. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/pulumi_extra/transforms/runtime.py +0 -0
  57. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/__init__.py +0 -0
  58. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/_helpers.py +0 -0
  59. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/conftest.py +0 -0
  60. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/__init__.py +0 -0
  61. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/__init__.py +0 -0
  62. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/__init__.py +0 -0
  63. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/test_require_description.py +0 -0
  64. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/test_require_tags.py +0 -0
  65. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/test_autotag.py +0 -0
  66. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/aws/test_common.py +0 -0
  67. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/__init__.py +0 -0
  68. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/__init__.py +0 -0
  69. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/test_require_description.py +0 -0
  70. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/test_require_labels.py +0 -0
  71. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/test_autolabel.py +0 -0
  72. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/contrib/gcp/test_common.py +0 -0
  73. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/transforms/__init__.py +0 -0
  74. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/transforms/test_invoke.py +0 -0
  75. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/transforms/test_resource_.py +0 -0
  76. {pulumi_extra-0.1.3 → pulumi_extra-0.1.5}/tests/transforms/test_runtime.py +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "lasuillard/pulumi-extra",
2
+ "name": "lasuillard-s/pulumi-extra",
3
3
  "dockerComposeFile": [
4
4
  "./docker-compose.devcontainer.yaml"
5
5
  ],
@@ -11,14 +11,13 @@ env:
11
11
 
12
12
  jobs:
13
13
  lint:
14
- name: Lint
15
14
  runs-on: ubuntu-latest
15
+ timeout-minutes: 10
16
+ permissions:
17
+ contents: read
16
18
  steps:
17
- - name: Checkout
18
- uses: actions/checkout@v5
19
-
20
- - name: Set up uv
21
- uses: astral-sh/setup-uv@v6
19
+ - uses: actions/checkout@v5
20
+ - uses: astral-sh/setup-uv@v7
22
21
  with:
23
22
  version: latest
24
23
  enable-cache: true
@@ -43,8 +42,9 @@ jobs:
43
42
  if: always()
44
43
 
45
44
  test:
46
- name: Test (Python ${{ matrix.python-version }})
45
+ name: test (py${{ matrix.python-version }})
47
46
  runs-on: ubuntu-latest
47
+ timeout-minutes: 15
48
48
  permissions:
49
49
  contents: read
50
50
  id-token: write
@@ -54,11 +54,8 @@ jobs:
54
54
  python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
55
55
 
56
56
  steps:
57
- - name: Checkout
58
- uses: actions/checkout@v5
59
-
60
- - name: Set up uv
61
- uses: astral-sh/setup-uv@v6
57
+ - uses: actions/checkout@v5
58
+ - uses: astral-sh/setup-uv@v7
62
59
  with:
63
60
  version: latest
64
61
  enable-cache: true
@@ -0,0 +1,41 @@
1
+ name: Docs
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ tags: [v*]
7
+
8
+ concurrency:
9
+ group: docs
10
+ cancel-in-progress: false
11
+
12
+ env:
13
+ UV_FROZEN: 1
14
+
15
+ jobs:
16
+ docs:
17
+ runs-on: ubuntu-latest
18
+ timeout-minutes: 10
19
+ permissions:
20
+ contents: write
21
+ steps:
22
+ - uses: actions/checkout@v5
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - uses: astral-sh/setup-uv@v7
27
+ with:
28
+ version: latest
29
+ enable-cache: true
30
+
31
+ - name: Install deps
32
+ run: uv sync
33
+
34
+ - name: Configure Git user
35
+ run: |
36
+ git config --local user.email "github-actions[bot]@github.com"
37
+ git config --local user.name "GitHub Action"
38
+
39
+ - name: Build docs
40
+ run: |
41
+ uv run mike deploy --push "${{ github.ref_name }}"
@@ -0,0 +1,51 @@
1
+ name: Prepare Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ tag:
7
+ description: Semver-style tag for release (e.g., v1.0.0)
8
+ required: true
9
+
10
+ jobs:
11
+ create-pr:
12
+ runs-on: ubuntu-latest
13
+ timeout-minutes: 5
14
+ permissions:
15
+ contents: write
16
+ pull-requests: write
17
+ steps:
18
+ - name: Check tag format
19
+ run: |
20
+ if [[ ! "${{ inputs.tag }}" =~ ^v ]]; then
21
+ echo "Tag must start with 'v'"
22
+ exit 1
23
+ fi
24
+
25
+ - uses: actions/checkout@v5
26
+ - uses: astral-sh/setup-uv@v7
27
+ with:
28
+ version: latest
29
+ enable-cache: true
30
+
31
+ - name: Set version
32
+ run: |
33
+ tag="${{ inputs.tag }}"
34
+ tag_no_v="${tag#v}"
35
+ uv version "${tag#v}"
36
+
37
+ - name: Generate GitHub App token
38
+ uses: actions/create-github-app-token@v2
39
+ id: generate-token
40
+ with:
41
+ app-id: ${{ vars.GH_APP_ID }}
42
+ private-key: ${{ secrets.GH_APP_PRIVATE_KEY }}
43
+
44
+ - name: Create pull request
45
+ uses: peter-evans/create-pull-request@v7.0.8
46
+ with:
47
+ token: ${{ steps.generate-token.outputs.token }}
48
+ sign-commits: true
49
+ title: Release ${{ inputs.tag }}
50
+ branch: release/${{ inputs.tag }}
51
+ delete-branch: true
@@ -1,24 +1,21 @@
1
1
  name: Release
2
2
 
3
3
  on:
4
- push:
5
- tags: [v*]
4
+ release:
5
+ types: [published]
6
6
 
7
7
  env:
8
8
  UV_FROZEN: 1
9
9
 
10
10
  jobs:
11
11
  release:
12
- name: Release
13
12
  runs-on: ubuntu-latest
13
+ timeout-minutes: 5
14
14
  permissions:
15
15
  contents: write
16
16
  steps:
17
- - name: Checkout
18
- uses: actions/checkout@v5
19
-
20
- - name: Set up uv
21
- uses: astral-sh/setup-uv@v6
17
+ - uses: actions/checkout@v5
18
+ - uses: astral-sh/setup-uv@v7
22
19
  with:
23
20
  version: latest
24
21
  enable-cache: true
@@ -30,31 +27,36 @@ jobs:
30
27
  run: uv build
31
28
 
32
29
  - name: Create release
33
- uses: softprops/action-gh-release@v2
30
+ uses: softprops/action-gh-release@v2.4.1
34
31
  with:
35
32
  generate_release_notes: true
36
33
  files: dist/*
37
34
 
35
+ - name: Show files
36
+ run: ls -l --all --recursive dist
37
+
38
38
  - name: Upload release distributions
39
- uses: actions/upload-artifact@v4
39
+ uses: actions/upload-artifact@v5
40
40
  with:
41
41
  name: release-dists
42
42
  path: dist/
43
43
 
44
44
  publish-pypi:
45
- name: Publish to PyPI
45
+ needs: release
46
46
  runs-on: ubuntu-latest
47
- needs:
48
- - release
47
+ timeout-minutes: 5
49
48
  permissions:
50
49
  id-token: write
51
50
  environment: pypi
52
51
  steps:
53
52
  - name: Retrieve release distributions
54
- uses: actions/download-artifact@v5
53
+ uses: actions/download-artifact@v6
55
54
  with:
56
55
  name: release-dists
57
56
  path: dist/
58
57
 
58
+ - name: Show artifacts
59
+ run: ls -l --all --recursive dist
60
+
59
61
  - name: Publish release distributions to PyPI
60
62
  uses: pypa/gh-action-pypi-publish@release/v1
@@ -2,27 +2,22 @@ default_stages: [pre-commit]
2
2
  fail_fast: true
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v5.0.0
5
+ rev: v6.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: end-of-file-fixer
9
9
 
10
- - repo: https://github.com/lasuillard/pre-commit-hooks
11
- rev: v0.4.1
10
+ - repo: https://github.com/lasuillard-s/devobs
11
+ rev: v0.2.1
12
12
  hooks:
13
- - id: source-matching-test
13
+ - id: check-file-pair
14
14
  args:
15
- - --source
16
- - pulumi_extra
15
+ - --from=pulumi_extra
16
+ - --to=tests
17
+ - --include=*.py
18
+ - --exclude=errors.py,_*.py
19
+ - --expect={to}/{relative_from}/test_{filename}
17
20
  - --create-if-not-exists
18
- - --extend-exclude
19
- - "**/errors.py"
20
- - id: test-matching-source
21
- args:
22
- - --target
23
- - pulumi_extra
24
- - id: preferred-suffix
25
- args: [--rename]
26
21
 
27
22
  - repo: local
28
23
  hooks:
@@ -28,6 +28,11 @@ update: ## Update deps and tools
28
28
  pre-commit autoupdate
29
29
  .PHONY: update
30
30
 
31
+ serve-docs: ## Serve documentation with live reload
32
+ uv run mike serve \
33
+ --dev-addr "$$([ -n "$${CONTAINER:-}" ] && echo '0.0.0.0:8000' || echo '127.0.0.1:8000')"
34
+ .PHONY: serve-docs
35
+
31
36
 
32
37
  # =============================================================================
33
38
  # CI
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi-extra
3
- Version: 0.1.3
3
+ Version: 0.1.5
4
4
  Summary: Extra Pulumi utils and resources.
5
- Project-URL: Homepage, https://github.com/lasuillard/pulumi-extra
6
- Project-URL: Repository, https://github.com/lasuillard/pulumi-extra.git
7
- Project-URL: Issues, https://github.com/lasuillard/pulumi-extra/issues
5
+ Project-URL: Homepage, https://github.com/lasuillard-s/pulumi-extra
6
+ Project-URL: Repository, https://github.com/lasuillard-s/pulumi-extra.git
7
+ Project-URL: Issues, https://github.com/lasuillard-s/pulumi-extra/issues
8
8
  Author-email: Yuchan Lee <lasuillard@gmail.com>
9
9
  License-Expression: MIT
10
10
  License-File: LICENSE
@@ -23,8 +23,7 @@ Description-Content-Type: text/markdown
23
23
  # pulumi-extra
24
24
 
25
25
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
26
- [![CI](https://github.com/lasuillard/pulumi-extra/actions/workflows/ci.yaml/badge.svg)](https://github.com/lasuillard/pulumi-extra/actions/workflows/ci.yaml)
27
- [![codecov](https://codecov.io/gh/lasuillard/pulumi-extra/graph/badge.svg?token=uuckU93NAu)](https://codecov.io/gh/lasuillard/pulumi-extra)
26
+ [![codecov](https://codecov.io/gh/lasuillard-s/pulumi-extra/graph/badge.svg?token=uuckU93NAu)](https://codecov.io/gh/lasuillard-s/pulumi-extra)
28
27
  [![PyPI - Version](https://img.shields.io/pypi/v/pulumi-extra)](https://pypi.org/project/pulumi-extra/)
29
28
 
30
29
  Extra Pulumi utils and resources.
@@ -0,0 +1,7 @@
1
+ # pulumi-extra
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
+ [![codecov](https://codecov.io/gh/lasuillard-s/pulumi-extra/graph/badge.svg?token=uuckU93NAu)](https://codecov.io/gh/lasuillard-s/pulumi-extra)
5
+ [![PyPI - Version](https://img.shields.io/pypi/v/pulumi-extra)](https://pypi.org/project/pulumi-extra/)
6
+
7
+ Extra Pulumi utils and resources.
@@ -0,0 +1,3 @@
1
+ ::: pulumi_extra.contrib.aws
2
+ options:
3
+ show_root_heading: true
@@ -0,0 +1,3 @@
1
+ ::: pulumi_extra.contrib.gcp
2
+ options:
3
+ show_root_heading: true
@@ -0,0 +1,15 @@
1
+ ::: pulumi_extra.resource_
2
+ options:
3
+ show_root_heading: true
4
+
5
+ ::: pulumi_extra.stack_reference
6
+ options:
7
+ show_root_heading: true
8
+
9
+ ::: pulumi_extra.output
10
+ options:
11
+ show_root_heading: true
12
+
13
+ ::: pulumi_extra.transforms
14
+ options:
15
+ show_root_heading: true
@@ -0,0 +1 @@
1
+ ../README.md
@@ -0,0 +1,38 @@
1
+ site_name: pulumi-extra
2
+ repo_url: https://github.com/lasuillard-s/pulumi-extra
3
+ repo_name: lasuillard-s/pulumi-extra
4
+ theme:
5
+ name: material
6
+ icon:
7
+ repo: fontawesome/brands/github
8
+ plugins:
9
+ - mkdocstrings:
10
+ handlers:
11
+ python:
12
+ options:
13
+ show_submodules: false
14
+ filters:
15
+ - "!^_[^_]"
16
+ - search
17
+ - mike
18
+ nav:
19
+ - Introduction: index.md
20
+ - API References:
21
+ - Core: api-references/index.md
22
+ - Contrib:
23
+ - AWS: api-references/contrib/aws.md
24
+ - GCP: api-references/contrib/gcp.md
25
+ markdown_extensions:
26
+ - def_list
27
+ - pymdownx.tasklist:
28
+ custom_checkbox: true
29
+ - pymdownx.highlight:
30
+ anchor_linenums: true
31
+ line_spans: __span
32
+ pygments_lang_class: true
33
+ - pymdownx.inlinehilite
34
+ - pymdownx.snippets
35
+ - pymdownx.superfences
36
+ extra:
37
+ version:
38
+ provider: mike
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "pulumi-extra"
3
3
  description = "Extra Pulumi utils and resources."
4
- version = "0.1.3"
4
+ version = "0.1.5"
5
5
  authors = [{ name = "Yuchan Lee", email = "lasuillard@gmail.com" }]
6
6
  readme = "README.md"
7
7
  license = "MIT"
@@ -14,7 +14,14 @@ aws = ["pulumi-aws>=6"]
14
14
  gcp = ["pulumi-gcp>=8"]
15
15
 
16
16
  [dependency-groups]
17
- dev = ["mypy~=1.11", "ruff~=0.6"]
17
+ dev = [
18
+ "mike>=2.1.3",
19
+ "mkdocs>=1.6.1",
20
+ "mkdocs-material>=9.6.22",
21
+ "mkdocstrings[python]>=0.30.1",
22
+ "mypy~=1.11",
23
+ "ruff~=0.6",
24
+ ]
18
25
  test = [
19
26
  "coverage~=7.3",
20
27
  "pytest-cov>=5,<7",
@@ -27,9 +34,9 @@ test = [
27
34
  ]
28
35
 
29
36
  [project.urls]
30
- Homepage = "https://github.com/lasuillard/pulumi-extra"
31
- Repository = "https://github.com/lasuillard/pulumi-extra.git"
32
- Issues = "https://github.com/lasuillard/pulumi-extra/issues"
37
+ Homepage = "https://github.com/lasuillard-s/pulumi-extra"
38
+ Repository = "https://github.com/lasuillard-s/pulumi-extra.git"
39
+ Issues = "https://github.com/lasuillard-s/pulumi-extra/issues"
33
40
 
34
41
  [build-system]
35
42
  requires = ["hatchling"]
@@ -68,7 +68,7 @@ class Test__render_template:
68
68
  # ...
69
69
 
70
70
  # Act & Assert
71
- with pytest.raises(ValueError, match="Either context or input must be provided."):
71
+ with pytest.raises(ValueError, match=r"Either context or input must be provided."):
72
72
  render_template( # type: ignore[call-overload]
73
73
  "docker run --detach {{ image }} {{ command }}",
74
74
  context={"don't-care": "yes"},
@@ -24,7 +24,7 @@ class Test__resource_has_attribute:
24
24
  # Act & Assert
25
25
  with pytest.raises(
26
26
  UnknownResourceTypeError,
27
- match="Unable to resolve resource type 'random:unknown/unknown:Unknown'",
27
+ match=r"Unable to resolve resource type 'random:unknown/unknown:Unknown'",
28
28
  ):
29
29
  resource_has_attribute("random:unknown/unknown:Unknown", "whatever")
30
30
 
@@ -52,7 +52,7 @@ class Test__get_stack_reference:
52
52
  # ...
53
53
 
54
54
  # Act & Assert
55
- with pytest.raises(ValueError, match="Invalid stack reference: 'organization/project/dev/extra'"):
55
+ with pytest.raises(ValueError, match=r"Invalid stack reference: 'organization/project/dev/extra'"):
56
56
  get_stack_reference("organization/project/dev/extra")
57
57
 
58
58
 
@@ -84,7 +84,7 @@ class Test__get_stack_outputs:
84
84
  # ...
85
85
 
86
86
  # Act & Assert
87
- with pytest.raises(ValueError, match="Invalid output reference: ':output'"):
87
+ with pytest.raises(ValueError, match=r"Invalid output reference: ':output'"):
88
88
  get_stack_outputs(":output")
89
89
 
90
90