pulumi-extra 0.1.4__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.4 → pulumi_extra-0.1.5}/.devcontainer/devcontainer.json +1 -1
  2. {pulumi_extra-0.1.4 → 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.4 → pulumi_extra-0.1.5}/.github/workflows/release.yaml +16 -14
  6. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.pre-commit-config.yaml +9 -14
  7. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/Makefile +1 -5
  8. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/PKG-INFO +1 -1
  9. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/mkdocs.yaml +4 -0
  10. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pyproject.toml +2 -1
  11. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/test_output.py +1 -1
  12. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/test_resource_.py +1 -1
  13. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/test_stack_reference.py +2 -2
  14. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/uv.lock +88 -36
  15. pulumi_extra-0.1.4/.github/workflows/docs.yaml +0 -51
  16. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.devcontainer/Dockerfile +0 -0
  17. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.devcontainer/docker-compose.devcontainer.yaml +0 -0
  18. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.devcontainer/onCreateCommand.sh +0 -0
  19. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.devcontainer/postAttachCommand.sh +0 -0
  20. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.editorconfig +0 -0
  21. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.gitattributes +0 -0
  22. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.github/dependabot.yaml +0 -0
  23. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.gitignore +0 -0
  24. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.python-version +0 -0
  25. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.vscode/extensions.json +0 -0
  26. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/.vscode/settings.json +0 -0
  27. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/LICENSE +0 -0
  28. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/README.md +0 -0
  29. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/docs/api-references/contrib/aws.md +0 -0
  30. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/docs/api-references/contrib/gcp.md +0 -0
  31. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/docs/api-references/index.md +0 -0
  32. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/docs/index.md +0 -0
  33. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/noxfile.py +0 -0
  34. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/__init__.py +0 -0
  35. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/__init__.py +0 -0
  36. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/__init__.py +0 -0
  37. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/autotag.py +0 -0
  38. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/common.py +0 -0
  39. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/__init__.py +0 -0
  40. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/require_description.py +0 -0
  41. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/aws/policies/require_tags.py +0 -0
  42. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/__init__.py +0 -0
  43. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/autolabel.py +0 -0
  44. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/common.py +0 -0
  45. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/__init__.py +0 -0
  46. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/require_description.py +0 -0
  47. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/contrib/gcp/policies/require_labels.py +0 -0
  48. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/errors.py +0 -0
  49. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/output.py +0 -0
  50. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/py.typed +0 -0
  51. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/resource_.py +0 -0
  52. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/stack_reference.py +0 -0
  53. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/transforms/__init__.py +0 -0
  54. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/transforms/invoke.py +0 -0
  55. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/transforms/resource_.py +0 -0
  56. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/pulumi_extra/transforms/runtime.py +0 -0
  57. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/__init__.py +0 -0
  58. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/_helpers.py +0 -0
  59. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/conftest.py +0 -0
  60. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/__init__.py +0 -0
  61. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/__init__.py +0 -0
  62. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/__init__.py +0 -0
  63. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/test_require_description.py +0 -0
  64. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/policies/test_require_tags.py +0 -0
  65. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/test_autotag.py +0 -0
  66. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/aws/test_common.py +0 -0
  67. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/__init__.py +0 -0
  68. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/__init__.py +0 -0
  69. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/test_require_description.py +0 -0
  70. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/policies/test_require_labels.py +0 -0
  71. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/test_autolabel.py +0 -0
  72. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/contrib/gcp/test_common.py +0 -0
  73. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/transforms/__init__.py +0 -0
  74. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/transforms/test_invoke.py +0 -0
  75. {pulumi_extra-0.1.4 → pulumi_extra-0.1.5}/tests/transforms/test_resource_.py +0 -0
  76. {pulumi_extra-0.1.4 → 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:
@@ -29,7 +29,7 @@ update: ## Update deps and tools
29
29
  .PHONY: update
30
30
 
31
31
  serve-docs: ## Serve documentation with live reload
32
- uv run mkdocs serve \
32
+ uv run mike serve \
33
33
  --dev-addr "$$([ -n "$${CONTAINER:-}" ] && echo '0.0.0.0:8000' || echo '127.0.0.1:8000')"
34
34
  .PHONY: serve-docs
35
35
 
@@ -55,10 +55,6 @@ test: ## Run tests
55
55
  uv run coverage html
56
56
  .PHONY: test
57
57
 
58
- docs: ## Build documentation
59
- uv run mkdocs build
60
- .PHONY: docs
61
-
62
58
 
63
59
  # =============================================================================
64
60
  # Handy Scripts
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pulumi-extra
3
- Version: 0.1.4
3
+ Version: 0.1.5
4
4
  Summary: Extra Pulumi utils and resources.
5
5
  Project-URL: Homepage, https://github.com/lasuillard-s/pulumi-extra
6
6
  Project-URL: Repository, https://github.com/lasuillard-s/pulumi-extra.git
@@ -14,6 +14,7 @@ plugins:
14
14
  filters:
15
15
  - "!^_[^_]"
16
16
  - search
17
+ - mike
17
18
  nav:
18
19
  - Introduction: index.md
19
20
  - API References:
@@ -32,3 +33,6 @@ markdown_extensions:
32
33
  - pymdownx.inlinehilite
33
34
  - pymdownx.snippets
34
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.4"
4
+ version = "0.1.5"
5
5
  authors = [{ name = "Yuchan Lee", email = "lasuillard@gmail.com" }]
6
6
  readme = "README.md"
7
7
  license = "MIT"
@@ -15,6 +15,7 @@ gcp = ["pulumi-gcp>=8"]
15
15
 
16
16
  [dependency-groups]
17
17
  dev = [
18
+ "mike>=2.1.3",
18
19
  "mkdocs>=1.6.1",
19
20
  "mkdocs-material>=9.6.22",
20
21
  "mkdocstrings[python]>=0.30.1",
@@ -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
 
@@ -504,13 +504,25 @@ name = "importlib-metadata"
504
504
  version = "8.7.0"
505
505
  source = { registry = "https://pypi.org/simple" }
506
506
  dependencies = [
507
- { name = "zipp", marker = "python_full_version < '3.10'" },
507
+ { name = "zipp" },
508
508
  ]
509
509
  sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" }
510
510
  wheels = [
511
511
  { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" },
512
512
  ]
513
513
 
514
+ [[package]]
515
+ name = "importlib-resources"
516
+ version = "6.5.2"
517
+ source = { registry = "https://pypi.org/simple" }
518
+ dependencies = [
519
+ { name = "zipp", marker = "python_full_version < '3.10'" },
520
+ ]
521
+ sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" }
522
+ wheels = [
523
+ { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" },
524
+ ]
525
+
514
526
  [[package]]
515
527
  name = "iniconfig"
516
528
  version = "2.0.0"
@@ -621,6 +633,25 @@ wheels = [
621
633
  { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" },
622
634
  ]
623
635
 
636
+ [[package]]
637
+ name = "mike"
638
+ version = "2.1.3"
639
+ source = { registry = "https://pypi.org/simple" }
640
+ dependencies = [
641
+ { name = "importlib-metadata" },
642
+ { name = "importlib-resources" },
643
+ { name = "jinja2" },
644
+ { name = "mkdocs" },
645
+ { name = "pyparsing" },
646
+ { name = "pyyaml" },
647
+ { name = "pyyaml-env-tag" },
648
+ { name = "verspec" },
649
+ ]
650
+ sdist = { url = "https://files.pythonhosted.org/packages/ab/f7/2933f1a1fb0e0f077d5d6a92c6c7f8a54e6128241f116dff4df8b6050bbf/mike-2.1.3.tar.gz", hash = "sha256:abd79b8ea483fb0275b7972825d3082e5ae67a41820f8d8a0dc7a3f49944e810", size = 38119, upload-time = "2024-08-13T05:02:14.167Z" }
651
+ wheels = [
652
+ { url = "https://files.pythonhosted.org/packages/fd/1a/31b7cd6e4e7a02df4e076162e9783620777592bea9e4bb036389389af99d/mike-2.1.3-py3-none-any.whl", hash = "sha256:d90c64077e84f06272437b464735130d380703a76a5738b152932884c60c062a", size = 33754, upload-time = "2024-08-13T05:02:12.515Z" },
653
+ ]
654
+
624
655
  [[package]]
625
656
  name = "mkdocs"
626
657
  version = "1.6.1"
@@ -920,7 +951,7 @@ wheels = [
920
951
 
921
952
  [[package]]
922
953
  name = "pulumi-aws"
923
- version = "7.6.0"
954
+ version = "7.10.0"
924
955
  source = { registry = "https://pypi.org/simple" }
925
956
  dependencies = [
926
957
  { name = "parver" },
@@ -928,14 +959,14 @@ dependencies = [
928
959
  { name = "semver" },
929
960
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
930
961
  ]
931
- sdist = { url = "https://files.pythonhosted.org/packages/9d/51/dad3dd36a1359d30ad84a85423702525d1a521022ebb2692dd5e2b303e0d/pulumi_aws-7.6.0.tar.gz", hash = "sha256:3c4529adb562113d82f7cd929cdfd7c5ddc3950460f9446c9a52132b77e515de", size = 8069883, upload-time = "2025-08-27T02:35:50.101Z" }
962
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/d5/2152cca6b51b0ed47b375ae4e306e25bdbfc93c797344c4e0975f2a29e22/pulumi_aws-7.10.0.tar.gz", hash = "sha256:07112752c2533d6b7c1fa505a9e3bd39036c8738f48f6dcf98be02026627fe5c", size = 8322711, upload-time = "2025-10-24T17:17:01.504Z" }
932
963
  wheels = [
933
- { url = "https://files.pythonhosted.org/packages/7f/51/07614f181fd119b99d28821bcaa8c23c6f99cf9b6669358199dca4792331/pulumi_aws-7.6.0-py3-none-any.whl", hash = "sha256:38e0aa83400a8477514611b551d32002ef97b314d50138838e49ecd080cd409f", size = 10958118, upload-time = "2025-08-27T02:35:46.218Z" },
964
+ { url = "https://files.pythonhosted.org/packages/98/c7/5969b9b16dc4761eecc6abe23d983745a5de1431821e6317673e87768710/pulumi_aws-7.10.0-py3-none-any.whl", hash = "sha256:3bc541f1a065df5198ceca51379bf97090984f28a6ea0356e04f5be30e885ad0", size = 11293100, upload-time = "2025-10-24T17:16:57.203Z" },
934
965
  ]
935
966
 
936
967
  [[package]]
937
968
  name = "pulumi-docker"
938
- version = "4.8.2"
969
+ version = "4.9.0"
939
970
  source = { registry = "https://pypi.org/simple" }
940
971
  dependencies = [
941
972
  { name = "parver" },
@@ -943,14 +974,14 @@ dependencies = [
943
974
  { name = "semver" },
944
975
  { name = "typing-extensions", marker = "python_full_version < '3.11'" },
945
976
  ]
946
- sdist = { url = "https://files.pythonhosted.org/packages/00/88/1f0b346698120dc98481a68f15f353806ccf7a67eee3d842c14a8dbffa7e/pulumi_docker-4.8.2.tar.gz", hash = "sha256:49f69343e1b22e2580a5b427999be156f5b72cdbd81e6d9c252f36d0ce270592", size = 107239, upload-time = "2025-08-21T21:15:52.78Z" }
977
+ sdist = { url = "https://files.pythonhosted.org/packages/99/37/b89a1992308609620e8225449940e70bd9a227435ccf42c39938668058c5/pulumi_docker-4.9.0.tar.gz", hash = "sha256:335cb42097e05ed15f940fc5d44e31bcb856e067354639b670775ce88029276b", size = 108365, upload-time = "2025-09-26T04:04:35.867Z" }
947
978
  wheels = [
948
- { url = "https://files.pythonhosted.org/packages/da/99/fc1aa2c32688891ef2589c1b1ecca660a273ec0fd6886311c64e7111fd60/pulumi_docker-4.8.2-py3-none-any.whl", hash = "sha256:d097082810f5a0fa6b3cbe4f65acf365b0eaeeed2278657725f31e47622ab826", size = 128687, upload-time = "2025-08-21T21:15:50.69Z" },
979
+ { url = "https://files.pythonhosted.org/packages/45/23/90a7c2735445c04fb8443a576baf9e914cc3b50f5f3603389e48f33868fa/pulumi_docker-4.9.0-py3-none-any.whl", hash = "sha256:d1bdd85f8292d2901b40ae1ae2742b325b1eda807bc9b658bfb6353cb043501a", size = 129825, upload-time = "2025-09-26T04:04:33.921Z" },
949
980
  ]
950
981
 
951
982
  [[package]]
952
983
  name = "pulumi-extra"
953
- version = "0.1.4"
984
+ version = "0.1.5"
954
985
  source = { editable = "." }
955
986
  dependencies = [
956
987
  { name = "braceexpand" },
@@ -971,6 +1002,7 @@ policy = [
971
1002
 
972
1003
  [package.dev-dependencies]
973
1004
  dev = [
1005
+ { name = "mike" },
974
1006
  { name = "mkdocs" },
975
1007
  { name = "mkdocs-material" },
976
1008
  { name = "mkdocstrings", extra = ["python"] },
@@ -1001,6 +1033,7 @@ provides-extras = ["policy", "aws", "gcp"]
1001
1033
 
1002
1034
  [package.metadata.requires-dev]
1003
1035
  dev = [
1036
+ { name = "mike", specifier = ">=2.1.3" },
1004
1037
  { name = "mkdocs", specifier = ">=1.6.1" },
1005
1038
  { name = "mkdocs-material", specifier = ">=9.6.22" },
1006
1039
  { name = "mkdocstrings", extras = ["python"], specifier = ">=0.30.1" },
@@ -1093,9 +1126,18 @@ wheels = [
1093
1126
  { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178, upload-time = "2025-07-28T16:19:31.401Z" },
1094
1127
  ]
1095
1128
 
1129
+ [[package]]
1130
+ name = "pyparsing"
1131
+ version = "3.2.5"
1132
+ source = { registry = "https://pypi.org/simple" }
1133
+ sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" }
1134
+ wheels = [
1135
+ { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" },
1136
+ ]
1137
+
1096
1138
  [[package]]
1097
1139
  name = "pytest"
1098
- version = "8.3.4"
1140
+ version = "8.4.2"
1099
1141
  source = { registry = "https://pypi.org/simple" }
1100
1142
  dependencies = [
1101
1143
  { name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1103,11 +1145,12 @@ dependencies = [
1103
1145
  { name = "iniconfig" },
1104
1146
  { name = "packaging" },
1105
1147
  { name = "pluggy" },
1148
+ { name = "pygments" },
1106
1149
  { name = "tomli", marker = "python_full_version < '3.11'" },
1107
1150
  ]
1108
- sdist = { url = "https://files.pythonhosted.org/packages/05/35/30e0d83068951d90a01852cb1cef56e5d8a09d20c7f511634cc2f7e0372a/pytest-8.3.4.tar.gz", hash = "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761", size = 1445919, upload-time = "2024-12-01T12:54:25.98Z" }
1151
+ sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" }
1109
1152
  wheels = [
1110
- { url = "https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl", hash = "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", size = 343083, upload-time = "2024-12-01T12:54:19.735Z" },
1153
+ { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
1111
1154
  ]
1112
1155
 
1113
1156
  [[package]]
@@ -1139,16 +1182,15 @@ wheels = [
1139
1182
 
1140
1183
  [[package]]
1141
1184
  name = "pytest-sugar"
1142
- version = "1.0.0"
1185
+ version = "1.1.1"
1143
1186
  source = { registry = "https://pypi.org/simple" }
1144
1187
  dependencies = [
1145
- { name = "packaging" },
1146
1188
  { name = "pytest" },
1147
1189
  { name = "termcolor" },
1148
1190
  ]
1149
- sdist = { url = "https://files.pythonhosted.org/packages/f5/ac/5754f5edd6d508bc6493bc37d74b928f102a5fff82d9a80347e180998f08/pytest-sugar-1.0.0.tar.gz", hash = "sha256:6422e83258f5b0c04ce7c632176c7732cab5fdb909cb39cca5c9139f81276c0a", size = 14992, upload-time = "2024-02-01T18:30:36.735Z" }
1191
+ sdist = { url = "https://files.pythonhosted.org/packages/0b/4e/60fed105549297ba1a700e1ea7b828044842ea27d72c898990510b79b0e2/pytest-sugar-1.1.1.tar.gz", hash = "sha256:73b8b65163ebf10f9f671efab9eed3d56f20d2ca68bda83fa64740a92c08f65d", size = 16533, upload-time = "2025-08-23T12:19:35.737Z" }
1150
1192
  wheels = [
1151
- { url = "https://files.pythonhosted.org/packages/92/fb/889f1b69da2f13691de09a111c16c4766a433382d44aa0ecf221deded44a/pytest_sugar-1.0.0-py3-none-any.whl", hash = "sha256:70ebcd8fc5795dc457ff8b69d266a4e2e8a74ae0c3edc749381c64b5246c8dfd", size = 10171, upload-time = "2024-02-01T18:30:29.395Z" },
1193
+ { url = "https://files.pythonhosted.org/packages/87/d5/81d38a91c1fdafb6711f053f5a9b92ff788013b19821257c2c38c1e132df/pytest_sugar-1.1.1-py3-none-any.whl", hash = "sha256:2f8319b907548d5b9d03a171515c1d43d2e38e32bd8182a1781eb20b43344cc8", size = 11440, upload-time = "2025-08-23T12:19:34.894Z" },
1152
1194
  ]
1153
1195
 
1154
1196
  [[package]]
@@ -1245,27 +1287,28 @@ wheels = [
1245
1287
 
1246
1288
  [[package]]
1247
1289
  name = "ruff"
1248
- version = "0.12.1"
1249
- source = { registry = "https://pypi.org/simple" }
1250
- sdist = { url = "https://files.pythonhosted.org/packages/97/38/796a101608a90494440856ccfb52b1edae90de0b817e76bfade66b12d320/ruff-0.12.1.tar.gz", hash = "sha256:806bbc17f1104fd57451a98a58df35388ee3ab422e029e8f5cf30aa4af2c138c", size = 4413426, upload-time = "2025-06-26T20:34:14.784Z" }
1251
- wheels = [
1252
- { url = "https://files.pythonhosted.org/packages/06/bf/3dba52c1d12ab5e78d75bd78ad52fb85a6a1f29cc447c2423037b82bed0d/ruff-0.12.1-py3-none-linux_armv6l.whl", hash = "sha256:6013a46d865111e2edb71ad692fbb8262e6c172587a57c0669332a449384a36b", size = 10305649, upload-time = "2025-06-26T20:33:39.242Z" },
1253
- { url = "https://files.pythonhosted.org/packages/8c/65/dab1ba90269bc8c81ce1d499a6517e28fe6f87b2119ec449257d0983cceb/ruff-0.12.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b3f75a19e03a4b0757d1412edb7f27cffb0c700365e9d6b60bc1b68d35bc89e0", size = 11120201, upload-time = "2025-06-26T20:33:42.207Z" },
1254
- { url = "https://files.pythonhosted.org/packages/3f/3e/2d819ffda01defe857fa2dd4cba4d19109713df4034cc36f06bbf582d62a/ruff-0.12.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9a256522893cb7e92bb1e1153283927f842dea2e48619c803243dccc8437b8be", size = 10466769, upload-time = "2025-06-26T20:33:44.102Z" },
1255
- { url = "https://files.pythonhosted.org/packages/63/37/bde4cf84dbd7821c8de56ec4ccc2816bce8125684f7b9e22fe4ad92364de/ruff-0.12.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:069052605fe74c765a5b4272eb89880e0ff7a31e6c0dbf8767203c1fbd31c7ff", size = 10660902, upload-time = "2025-06-26T20:33:45.98Z" },
1256
- { url = "https://files.pythonhosted.org/packages/0e/3a/390782a9ed1358c95e78ccc745eed1a9d657a537e5c4c4812fce06c8d1a0/ruff-0.12.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a684f125a4fec2d5a6501a466be3841113ba6847827be4573fddf8308b83477d", size = 10167002, upload-time = "2025-06-26T20:33:47.81Z" },
1257
- { url = "https://files.pythonhosted.org/packages/6d/05/f2d4c965009634830e97ffe733201ec59e4addc5b1c0efa035645baa9e5f/ruff-0.12.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdecdef753bf1e95797593007569d8e1697a54fca843d78f6862f7dc279e23bd", size = 11751522, upload-time = "2025-06-26T20:33:49.857Z" },
1258
- { url = "https://files.pythonhosted.org/packages/35/4e/4bfc519b5fcd462233f82fc20ef8b1e5ecce476c283b355af92c0935d5d9/ruff-0.12.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:70d52a058c0e7b88b602f575d23596e89bd7d8196437a4148381a3f73fcd5010", size = 12520264, upload-time = "2025-06-26T20:33:52.199Z" },
1259
- { url = "https://files.pythonhosted.org/packages/85/b2/7756a6925da236b3a31f234b4167397c3e5f91edb861028a631546bad719/ruff-0.12.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84d0a69d1e8d716dfeab22d8d5e7c786b73f2106429a933cee51d7b09f861d4e", size = 12133882, upload-time = "2025-06-26T20:33:54.231Z" },
1260
- { url = "https://files.pythonhosted.org/packages/dd/00/40da9c66d4a4d51291e619be6757fa65c91b92456ff4f01101593f3a1170/ruff-0.12.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6cc32e863adcf9e71690248607ccdf25252eeeab5193768e6873b901fd441fed", size = 11608941, upload-time = "2025-06-26T20:33:56.202Z" },
1261
- { url = "https://files.pythonhosted.org/packages/91/e7/f898391cc026a77fbe68dfea5940f8213622474cb848eb30215538a2dadf/ruff-0.12.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7fd49a4619f90d5afc65cf42e07b6ae98bb454fd5029d03b306bd9e2273d44cc", size = 11602887, upload-time = "2025-06-26T20:33:58.47Z" },
1262
- { url = "https://files.pythonhosted.org/packages/f6/02/0891872fc6aab8678084f4cf8826f85c5d2d24aa9114092139a38123f94b/ruff-0.12.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ed5af6aaaea20710e77698e2055b9ff9b3494891e1b24d26c07055459bb717e9", size = 10521742, upload-time = "2025-06-26T20:34:00.465Z" },
1263
- { url = "https://files.pythonhosted.org/packages/2a/98/d6534322c74a7d47b0f33b036b2498ccac99d8d8c40edadb552c038cecf1/ruff-0.12.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:801d626de15e6bf988fbe7ce59b303a914ff9c616d5866f8c79eb5012720ae13", size = 10149909, upload-time = "2025-06-26T20:34:02.603Z" },
1264
- { url = "https://files.pythonhosted.org/packages/34/5c/9b7ba8c19a31e2b6bd5e31aa1e65b533208a30512f118805371dbbbdf6a9/ruff-0.12.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:2be9d32a147f98a1972c1e4df9a6956d612ca5f5578536814372113d09a27a6c", size = 11136005, upload-time = "2025-06-26T20:34:04.723Z" },
1265
- { url = "https://files.pythonhosted.org/packages/dc/34/9bbefa4d0ff2c000e4e533f591499f6b834346025e11da97f4ded21cb23e/ruff-0.12.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:49b7ce354eed2a322fbaea80168c902de9504e6e174fd501e9447cad0232f9e6", size = 11648579, upload-time = "2025-06-26T20:34:06.766Z" },
1266
- { url = "https://files.pythonhosted.org/packages/6f/1c/20cdb593783f8f411839ce749ec9ae9e4298c2b2079b40295c3e6e2089e1/ruff-0.12.1-py3-none-win32.whl", hash = "sha256:d973fa626d4c8267848755bd0414211a456e99e125dcab147f24daa9e991a245", size = 10519495, upload-time = "2025-06-26T20:34:08.718Z" },
1267
- { url = "https://files.pythonhosted.org/packages/cf/56/7158bd8d3cf16394928f47c637d39a7d532268cd45220bdb6cd622985760/ruff-0.12.1-py3-none-win_amd64.whl", hash = "sha256:9e1123b1c033f77bd2590e4c1fe7e8ea72ef990a85d2484351d408224d603013", size = 11547485, upload-time = "2025-06-26T20:34:11.008Z" },
1268
- { url = "https://files.pythonhosted.org/packages/91/d0/6902c0d017259439d6fd2fd9393cea1cfe30169940118b007d5e0ea7e954/ruff-0.12.1-py3-none-win_arm64.whl", hash = "sha256:78ad09a022c64c13cc6077707f036bab0fac8cd7088772dcd1e5be21c5002efc", size = 10691209, upload-time = "2025-06-26T20:34:12.928Z" },
1290
+ version = "0.14.2"
1291
+ source = { registry = "https://pypi.org/simple" }
1292
+ sdist = { url = "https://files.pythonhosted.org/packages/ee/34/8218a19b2055b80601e8fd201ec723c74c7fe1ca06d525a43ed07b6d8e85/ruff-0.14.2.tar.gz", hash = "sha256:98da787668f239313d9c902ca7c523fe11b8ec3f39345553a51b25abc4629c96", size = 5539663, upload-time = "2025-10-23T19:37:00.956Z" }
1293
+ wheels = [
1294
+ { url = "https://files.pythonhosted.org/packages/16/dd/23eb2db5ad9acae7c845700493b72d3ae214dce0b226f27df89216110f2b/ruff-0.14.2-py3-none-linux_armv6l.whl", hash = "sha256:7cbe4e593505bdec5884c2d0a4d791a90301bc23e49a6b1eb642dd85ef9c64f1", size = 12533390, upload-time = "2025-10-23T19:36:18.044Z" },
1295
+ { url = "https://files.pythonhosted.org/packages/5a/8c/5f9acff43ddcf3f85130d0146d0477e28ccecc495f9f684f8f7119b74c0d/ruff-0.14.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:8d54b561729cee92f8d89c316ad7a3f9705533f5903b042399b6ae0ddfc62e11", size = 12887187, upload-time = "2025-10-23T19:36:22.664Z" },
1296
+ { url = "https://files.pythonhosted.org/packages/99/fa/047646491479074029665022e9f3dc6f0515797f40a4b6014ea8474c539d/ruff-0.14.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5c8753dfa44ebb2cde10ce5b4d2ef55a41fb9d9b16732a2c5df64620dbda44a3", size = 11925177, upload-time = "2025-10-23T19:36:24.778Z" },
1297
+ { url = "https://files.pythonhosted.org/packages/15/8b/c44cf7fe6e59ab24a9d939493a11030b503bdc2a16622cede8b7b1df0114/ruff-0.14.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d0bbeffb8d9f4fccf7b5198d566d0bad99a9cb622f1fc3467af96cb8773c9e3", size = 12358285, upload-time = "2025-10-23T19:36:26.979Z" },
1298
+ { url = "https://files.pythonhosted.org/packages/45/01/47701b26254267ef40369aea3acb62a7b23e921c27372d127e0f3af48092/ruff-0.14.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7047f0c5a713a401e43a88d36843d9c83a19c584e63d664474675620aaa634a8", size = 12303832, upload-time = "2025-10-23T19:36:29.192Z" },
1299
+ { url = "https://files.pythonhosted.org/packages/2d/5c/ae7244ca4fbdf2bee9d6405dcd5bc6ae51ee1df66eb7a9884b77b8af856d/ruff-0.14.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3bf8d2f9aa1602599217d82e8e0af7fd33e5878c4d98f37906b7c93f46f9a839", size = 13036995, upload-time = "2025-10-23T19:36:31.861Z" },
1300
+ { url = "https://files.pythonhosted.org/packages/27/4c/0860a79ce6fd4c709ac01173f76f929d53f59748d0dcdd662519835dae43/ruff-0.14.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1c505b389e19c57a317cf4b42db824e2fca96ffb3d86766c1c9f8b96d32048a7", size = 14512649, upload-time = "2025-10-23T19:36:33.915Z" },
1301
+ { url = "https://files.pythonhosted.org/packages/7f/7f/d365de998069720a3abfc250ddd876fc4b81a403a766c74ff9bde15b5378/ruff-0.14.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a307fc45ebd887b3f26b36d9326bb70bf69b01561950cdcc6c0bdf7bb8e0f7cc", size = 14088182, upload-time = "2025-10-23T19:36:36.983Z" },
1302
+ { url = "https://files.pythonhosted.org/packages/6c/ea/d8e3e6b209162000a7be1faa41b0a0c16a133010311edc3329753cc6596a/ruff-0.14.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:61ae91a32c853172f832c2f40bd05fd69f491db7289fb85a9b941ebdd549781a", size = 13599516, upload-time = "2025-10-23T19:36:39.208Z" },
1303
+ { url = "https://files.pythonhosted.org/packages/fa/ea/c7810322086db68989fb20a8d5221dd3b79e49e396b01badca07b433ab45/ruff-0.14.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1967e40286f63ee23c615e8e7e98098dedc7301568bd88991f6e544d8ae096", size = 13272690, upload-time = "2025-10-23T19:36:41.453Z" },
1304
+ { url = "https://files.pythonhosted.org/packages/a9/39/10b05acf8c45786ef501d454e00937e1b97964f846bf28883d1f9619928a/ruff-0.14.2-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2877f02119cdebf52a632d743a2e302dea422bfae152ebe2f193d3285a3a65df", size = 13496497, upload-time = "2025-10-23T19:36:43.61Z" },
1305
+ { url = "https://files.pythonhosted.org/packages/59/a1/1f25f8301e13751c30895092485fada29076e5e14264bdacc37202e85d24/ruff-0.14.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e681c5bc777de5af898decdcb6ba3321d0d466f4cb43c3e7cc2c3b4e7b843a05", size = 12266116, upload-time = "2025-10-23T19:36:45.625Z" },
1306
+ { url = "https://files.pythonhosted.org/packages/5c/fa/0029bfc9ce16ae78164e6923ef392e5f173b793b26cc39aa1d8b366cf9dc/ruff-0.14.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e21be42d72e224736f0c992cdb9959a2fa53c7e943b97ef5d081e13170e3ffc5", size = 12281345, upload-time = "2025-10-23T19:36:47.618Z" },
1307
+ { url = "https://files.pythonhosted.org/packages/a5/ab/ece7baa3c0f29b7683be868c024f0838770c16607bea6852e46b202f1ff6/ruff-0.14.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b8264016f6f209fac16262882dbebf3f8be1629777cf0f37e7aff071b3e9b92e", size = 12629296, upload-time = "2025-10-23T19:36:49.789Z" },
1308
+ { url = "https://files.pythonhosted.org/packages/a4/7f/638f54b43f3d4e48c6a68062794e5b367ddac778051806b9e235dfb7aa81/ruff-0.14.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5ca36b4cb4db3067a3b24444463ceea5565ea78b95fe9a07ca7cb7fd16948770", size = 13371610, upload-time = "2025-10-23T19:36:51.882Z" },
1309
+ { url = "https://files.pythonhosted.org/packages/8d/35/3654a973ebe5b32e1fd4a08ed2d46755af7267da7ac710d97420d7b8657d/ruff-0.14.2-py3-none-win32.whl", hash = "sha256:41775927d287685e08f48d8eb3f765625ab0b7042cc9377e20e64f4eb0056ee9", size = 12415318, upload-time = "2025-10-23T19:36:53.961Z" },
1310
+ { url = "https://files.pythonhosted.org/packages/71/30/3758bcf9e0b6a4193a6f51abf84254aba00887dfa8c20aba18aa366c5f57/ruff-0.14.2-py3-none-win_amd64.whl", hash = "sha256:0df3424aa5c3c08b34ed8ce099df1021e3adaca6e90229273496b839e5a7e1af", size = 13565279, upload-time = "2025-10-23T19:36:56.578Z" },
1311
+ { url = "https://files.pythonhosted.org/packages/2e/5d/aa883766f8ef9ffbe6aa24f7192fb71632f31a30e77eb39aa2b0dc4290ac/ruff-0.14.2-py3-none-win_arm64.whl", hash = "sha256:ea9d635e83ba21569fbacda7e78afbfeb94911c9434aff06192d9bc23fd5495a", size = 12554956, upload-time = "2025-10-23T19:36:58.714Z" },
1269
1312
  ]
1270
1313
 
1271
1314
  [[package]]
@@ -1361,6 +1404,15 @@ wheels = [
1361
1404
  { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" },
1362
1405
  ]
1363
1406
 
1407
+ [[package]]
1408
+ name = "verspec"
1409
+ version = "0.1.0"
1410
+ source = { registry = "https://pypi.org/simple" }
1411
+ sdist = { url = "https://files.pythonhosted.org/packages/e7/44/8126f9f0c44319b2efc65feaad589cadef4d77ece200ae3c9133d58464d0/verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e", size = 27123, upload-time = "2020-11-30T02:24:09.646Z" }
1412
+ wheels = [
1413
+ { url = "https://files.pythonhosted.org/packages/a4/ce/3b6fee91c85626eaf769d617f1be9d2e15c1cca027bbdeb2e0d751469355/verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31", size = 19640, upload-time = "2020-11-30T02:24:08.387Z" },
1414
+ ]
1415
+
1364
1416
  [[package]]
1365
1417
  name = "virtualenv"
1366
1418
  version = "20.29.2"
@@ -1,51 +0,0 @@
1
- name: Docs
2
-
3
- on:
4
- push:
5
- tags: [v*]
6
-
7
- env:
8
- UV_FROZEN: 1
9
-
10
- jobs:
11
- build-docs:
12
- name: Build Docs
13
- runs-on: ubuntu-latest
14
- steps:
15
- - name: Checkout
16
- uses: actions/checkout@v5
17
-
18
- - name: Set up uv
19
- uses: astral-sh/setup-uv@v6
20
- with:
21
- version: latest
22
- enable-cache: true
23
-
24
- - name: Install deps
25
- run: uv sync
26
-
27
- - name: Generate API docs
28
- run: make docs
29
-
30
- - name: Upload docs artifact
31
- uses: actions/upload-pages-artifact@v4
32
- with:
33
- path: site/
34
-
35
- deploy-docs:
36
- name: Deploy Docs
37
- needs: build-docs
38
- runs-on: ubuntu-latest
39
- permissions:
40
- pages: write
41
- id-token: write
42
- environment:
43
- name: github-pages
44
- url: ${{ steps.deployment.outputs.page_url }}
45
- concurrency:
46
- group: pages
47
- cancel-in-progress: false
48
- steps:
49
- - name: Publish API docs to GitHub Pages
50
- id: deployment
51
- uses: actions/deploy-pages@v4
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes