groupoid 0.1.0.dev4__tar.gz → 0.1.0.dev6__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 (100) hide show
  1. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/dependabot.yml +9 -0
  2. groupoid-0.1.0.dev6/.github/workflows/auto-tag-release.yml +109 -0
  3. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/workflows/ci.yml +27 -20
  4. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/workflows/docs-deploy.yml +3 -3
  5. groupoid-0.1.0.dev6/.github/workflows/release.yml +624 -0
  6. groupoid-0.1.0.dev6/.zenodo.json +39 -0
  7. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/CHANGELOG.md +118 -2
  8. groupoid-0.1.0.dev6/CITATION.cff +35 -0
  9. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/CONTRIBUTING.md +16 -7
  10. groupoid-0.1.0.dev6/CORRECTION_NOTICE.md +147 -0
  11. groupoid-0.1.0.dev6/LIMITATIONS.md +120 -0
  12. {groupoid-0.1.0.dev4/groupoid.egg-info → groupoid-0.1.0.dev6}/PKG-INFO +52 -38
  13. groupoid-0.1.0.dev6/PROBLEMS.md +173 -0
  14. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/README.md +50 -36
  15. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/REPRODUCE.md +1 -1
  16. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/SECURITY.md +10 -0
  17. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/STATUS.md +21 -17
  18. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/codemeta.json +2 -2
  19. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/docs/api.md +16 -2
  20. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/docs/index.md +16 -13
  21. groupoid-0.1.0.dev6/docs/quickstart.md +100 -0
  22. groupoid-0.1.0.dev6/docs/theory.md +200 -0
  23. groupoid-0.1.0.dev6/experiments/README.md +68 -0
  24. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/__init__.py +19 -3
  25. groupoid-0.1.0.dev6/groupoid/aggregation.py +402 -0
  26. groupoid-0.1.0.dev6/groupoid/cohomology.py +179 -0
  27. groupoid-0.1.0.dev6/groupoid/groupoid.py +120 -0
  28. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/persistence.py +9 -1
  29. groupoid-0.1.0.dev6/groupoid/transport.py +206 -0
  30. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6/groupoid.egg-info}/PKG-INFO +52 -38
  31. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid.egg-info/SOURCES.txt +6 -0
  32. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/pyproject.toml +6 -5
  33. groupoid-0.1.0.dev6/scripts/bind_release_sbom.py +198 -0
  34. groupoid-0.1.0.dev6/tests/test_audit_regressions.py +250 -0
  35. groupoid-0.1.0.dev6/tests/test_cohomology_cocycle.py +169 -0
  36. groupoid-0.1.0.dev6/tests/test_coverage_gaps.py +186 -0
  37. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_imports.py +9 -1
  38. groupoid-0.1.0.dev6/tests/test_integration.py +208 -0
  39. groupoid-0.1.0.dev6/tests/test_pipeline_integration.py +89 -0
  40. groupoid-0.1.0.dev6/tests/test_release_sbom_binding.py +156 -0
  41. groupoid-0.1.0.dev6/tests/test_release_workflow_integrity.py +784 -0
  42. groupoid-0.1.0.dev6/tests/test_scientific_corrections.py +552 -0
  43. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_transport_validation.py +30 -18
  44. groupoid-0.1.0.dev6/tests/theory/test_mathematical_invariants.py +120 -0
  45. groupoid-0.1.0.dev4/.github/workflows/auto-tag-release.yml +0 -72
  46. groupoid-0.1.0.dev4/.github/workflows/release.yml +0 -107
  47. groupoid-0.1.0.dev4/.zenodo.json +0 -39
  48. groupoid-0.1.0.dev4/CITATION.cff +0 -35
  49. groupoid-0.1.0.dev4/LIMITATIONS.md +0 -87
  50. groupoid-0.1.0.dev4/PROBLEMS.md +0 -117
  51. groupoid-0.1.0.dev4/docs/quickstart.md +0 -123
  52. groupoid-0.1.0.dev4/docs/theory.md +0 -107
  53. groupoid-0.1.0.dev4/experiments/README.md +0 -64
  54. groupoid-0.1.0.dev4/groupoid/aggregation.py +0 -299
  55. groupoid-0.1.0.dev4/groupoid/cohomology.py +0 -99
  56. groupoid-0.1.0.dev4/groupoid/groupoid.py +0 -90
  57. groupoid-0.1.0.dev4/groupoid/transport.py +0 -188
  58. groupoid-0.1.0.dev4/tests/test_cohomology_cocycle.py +0 -245
  59. groupoid-0.1.0.dev4/tests/test_coverage_gaps.py +0 -242
  60. groupoid-0.1.0.dev4/tests/test_integration.py +0 -253
  61. groupoid-0.1.0.dev4/tests/test_pipeline_integration.py +0 -130
  62. groupoid-0.1.0.dev4/tests/theory/test_mathematical_invariants.py +0 -166
  63. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  64. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  65. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/ISSUE_TEMPLATE/mathematical_correction.md +0 -0
  66. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.github/scripts/install_torch_cpu.sh +0 -0
  67. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.gitignore +0 -0
  68. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/.pre-commit-config.yaml +0 -0
  69. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/LICENSE +0 -0
  70. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/benchmarks/__init__.py +0 -0
  71. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/benchmarks/conftest.py +0 -0
  72. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/benchmarks/test_karcher_benchmark.py +0 -0
  73. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/docs/overrides/404.html +0 -0
  74. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/examples/README.md +0 -0
  75. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/examples/__init__.py +0 -0
  76. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/examples/synthetic_curve_demo.py +0 -0
  77. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/experiments/PREREGISTRATION.md +0 -0
  78. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/experiments/RESULTS.md +0 -0
  79. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/experiments/analyze.py +0 -0
  80. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/experiments/results.json +0 -0
  81. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/experiments/run_benchmark.py +0 -0
  82. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/laplacian.py +0 -0
  83. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/manifold.py +0 -0
  84. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/optimizer.py +0 -0
  85. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid/sheaf.py +0 -0
  86. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid.egg-info/dependency_links.txt +0 -0
  87. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid.egg-info/requires.txt +0 -0
  88. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/groupoid.egg-info/top_level.txt +0 -0
  89. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/mkdocs.yml +0 -0
  90. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/scripts/reproduce_sheaf_laplacian.py +0 -0
  91. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/setup.cfg +0 -0
  92. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/__init__.py +0 -0
  93. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_aggregation_disconnected.py +0 -0
  94. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_defensive_paths.py +0 -0
  95. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_optimizer_validation.py +0 -0
  96. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_persistence.py +0 -0
  97. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_persistence_dimension_labels.py +0 -0
  98. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_sheaf_laplacian.py +0 -0
  99. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/test_smoke.py +0 -0
  100. {groupoid-0.1.0.dev4 → groupoid-0.1.0.dev6}/tests/theory/__init__.py +0 -0
@@ -28,6 +28,15 @@ updates:
28
28
  # updates patch vulnerable dependencies regardless of this allow filter.
29
29
  allow:
30
30
  - dependency-type: "direct"
31
+ # numpy 2.x is a verified runtime incompatibility, not a routine bump:
32
+ # geomstats (a required runtime dependency) fails at import under
33
+ # numpy>=2.0 because `numpy.trapz` was removed, so the tested
34
+ # numpy>=1.24,<2.0 contract in pyproject.toml cannot widen (see closed
35
+ # PR #57). Scoped by version, not a blanket numpy ignore: compatible
36
+ # numpy 1.x version updates and 1.x security updates still flow.
37
+ ignore:
38
+ - dependency-name: "numpy"
39
+ versions: [">=2.0.0"]
31
40
  groups:
32
41
  # Batch updates by area into a single PR per group to limit noise instead
33
42
  # of one PR per package.
@@ -0,0 +1,109 @@
1
+ name: Auto Tag Release
2
+
3
+ # Creates the tag for a release-cut merge to main, then explicitly dispatches
4
+ # release.yml (build, attestations, PyPI publish, signing, GitHub Release)
5
+ # against that tag.
6
+ #
7
+ # The dispatch is explicit, not a tag-push trigger, because GitHub suppresses
8
+ # push-triggered workflow runs caused by a GITHUB_TOKEN-authored push: pushing
9
+ # the tag here does NOT cause release.yml's `on.push.tags` trigger to fire.
10
+ # workflow_dispatch is the documented exception to that suppression, which is
11
+ # why this workflow calls `gh workflow run` instead of relying on the tag
12
+ # push itself. (An earlier version of this workflow assumed the tag push
13
+ # alone would trigger release.yml; it did not, and no release was produced
14
+ # for v0.1.0.dev4 until this was fixed and the release re-run manually.)
15
+ #
16
+ # release.yml's own `push.tags` trigger remains as a fallback/manual path
17
+ # (a human pushing a tag with their own credentials is not subject to this
18
+ # suppression), alongside its `workflow_dispatch` trigger for republishing an
19
+ # existing tag to PyPI only.
20
+ #
21
+ # If a version needs a tag this workflow's format check rejects (see below),
22
+ # tag it manually -- this automation only ever creates a tag when one is
23
+ # missing, so a pre-existing manual tag always takes precedence and this
24
+ # workflow becomes a no-op for that version.
25
+
26
+ # Tag only a main commit whose CI run succeeded. The tag-exists check below
27
+ # keeps this idempotent for CI runs on commits that did not bump the version.
28
+ on:
29
+ workflow_run:
30
+ workflows: ["CI"]
31
+ types: [completed]
32
+
33
+ permissions:
34
+ contents: read
35
+
36
+ jobs:
37
+ tag:
38
+ if: >-
39
+ ${{ github.event.workflow_run.conclusion == 'success' &&
40
+ github.event.workflow_run.event == 'push' &&
41
+ github.event.workflow_run.head_branch == 'main' &&
42
+ github.event.workflow_run.head_repository.full_name == github.repository }}
43
+ runs-on: ubuntu-latest
44
+ permissions:
45
+ contents: write # push the tag
46
+ actions: write # dispatch release.yml via `gh workflow run`
47
+ steps:
48
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
49
+ with:
50
+ ref: ${{ github.event.workflow_run.head_sha }}
51
+ fetch-depth: 0 # need full tag history to check for an existing tag
52
+
53
+ - name: Create the release tag if this version doesn't have one yet, and dispatch the release
54
+ env:
55
+ GH_TOKEN: ${{ github.token }}
56
+ CI_SHA: ${{ github.event.workflow_run.head_sha }}
57
+ run: |
58
+ set -euo pipefail
59
+
60
+ # Tag only the exact commit that passed CI, and only while it is
61
+ # still the head of main.
62
+ ci_sha="${CI_SHA}"
63
+ [ "$(git rev-parse HEAD)" = "${ci_sha}" ]
64
+ main_sha="$(gh api "repos/${GITHUB_REPOSITORY}/git/ref/heads/main" --jq .object.sha)"
65
+ if [ "${main_sha}" != "${ci_sha}" ]; then
66
+ echo "main advanced past ${ci_sha}; the newer head's CI run decides."
67
+ exit 0
68
+ fi
69
+
70
+ version=$(grep -m1 '^version = "' pyproject.toml | sed -E 's/version = "(.*)"/\1/')
71
+ if [ -z "${version}" ]; then
72
+ echo "::error::could not extract a version from pyproject.toml"
73
+ exit 1
74
+ fi
75
+
76
+ # PEP 440-ish release/pre-release only: X.Y.Z, optionally with
77
+ # .devN / aN / bN / rcN. No local version segment (+...), no
78
+ # anything else. A version that doesn't match this is presumably
79
+ # intentional and unusual enough to want a human tagging it by
80
+ # hand rather than this automation guessing.
81
+ if ! echo "${version}" | grep -Eq '^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(\.dev(0|[1-9][0-9]*)|a(0|[1-9][0-9]*)|b(0|[1-9][0-9]*)|rc(0|[1-9][0-9]*))?$'; then
82
+ echo "::error::version '${version}' is not a recognized release format (expected X.Y.Z, optionally with .devN/aN/bN/rcN, no local metadata); refusing to tag automatically. Tag it manually if this is intentional."
83
+ exit 1
84
+ fi
85
+
86
+ tag="v${version}"
87
+
88
+ if git rev-parse "refs/tags/${tag}" >/dev/null 2>&1; then
89
+ echo "Tag ${tag} already exists; nothing to do."
90
+ exit 0
91
+ fi
92
+
93
+ if ! grep -qF "[${version}]" CHANGELOG.md; then
94
+ echo "::error::CHANGELOG.md has no [${version}] heading; refusing to tag an undocumented release. Add the changelog section as part of the version-bump PR."
95
+ exit 1
96
+ fi
97
+
98
+ echo "Version ${version} has no matching tag; creating ${tag}."
99
+ git config user.name "github-actions[bot]"
100
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
101
+ git tag -a "${tag}" -m "Release ${tag}"
102
+ git push origin "refs/tags/${tag}"
103
+
104
+ echo "Dispatching release.yml for ${tag}."
105
+ gh workflow run release.yml \
106
+ --repo "${GITHUB_REPOSITORY}" \
107
+ --ref "${tag}" \
108
+ -f "ref=${tag}" \
109
+ -f "create_github_release=true"
@@ -13,8 +13,8 @@ jobs:
13
13
  lint:
14
14
  runs-on: ubuntu-latest
15
15
  steps:
16
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
17
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
18
18
  with:
19
19
  python-version: "3.11"
20
20
  - name: Install dependencies
@@ -40,8 +40,8 @@ jobs:
40
40
  matrix:
41
41
  python-version: ["3.10", "3.11", "3.12"]
42
42
  steps:
43
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
44
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
43
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
44
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
45
45
  with:
46
46
  python-version: ${{ matrix.python-version }}
47
47
  - name: Install dependencies
@@ -58,8 +58,8 @@ jobs:
58
58
  security:
59
59
  runs-on: ubuntu-latest
60
60
  steps:
61
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
62
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
61
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
62
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
63
63
  with:
64
64
  python-version: "3.11"
65
65
  - name: Install dependencies
@@ -83,20 +83,27 @@ jobs:
83
83
  - name: Audit dependencies for known vulnerabilities (pip-audit)
84
84
  # pip-audit (OSV-backed, maintained) replaces the deprecated `safety check`
85
85
  # (deprecated in safety 3.x in favour of the account-gated `safety scan`).
86
- # HARD gate: any advisory with a fix version fails the job. The single
87
- # documented exception is CVE-2025-3000 (torch): no fixed release exists
88
- # upstream, and OSV expresses the affected range (listed versions up to
89
- # v2.6.0) as a Git/commit boundary pip-audit cannot version-resolve, so it
90
- # conservatively flags the installed torch. Disclosed in SECURITY.md; the
91
- # torch.load / JIT deserialization path is not exercised by GROUPOID. Revisit
92
- # the ignore once upstream publishes a fixed release.
93
- run: pip-audit --ignore-vuln CVE-2025-3000
86
+ # HARD gate: any advisory with a fix version fails the job. Two documented
87
+ # exceptions, both disclosed in SECURITY.md:
88
+ # - CVE-2025-3000 (torch): no fixed release exists upstream, and OSV
89
+ # expresses the affected range (listed versions up to v2.6.0) as a
90
+ # Git/commit boundary pip-audit cannot version-resolve, so it
91
+ # conservatively flags the installed torch. The torch.load / JIT
92
+ # deserialization path is not exercised by GROUPOID. Revisit the ignore
93
+ # once upstream publishes a fixed release.
94
+ # - PYSEC-2026-3447 (CVE-2026-59890, setuptools <83): the fix (83.0.0) is
95
+ # unreachable while torch requires setuptools<82 (see the install step
96
+ # above). The flaw is a macOS-only (APFS/HFS+) Unicode-normalization
97
+ # bypass of MANIFEST.in exclude rules when building sdists; all CI and
98
+ # release builds run on ubuntu-latest. Drop the ignore once torch
99
+ # permits setuptools>=83.
100
+ run: pip-audit --ignore-vuln CVE-2025-3000 --ignore-vuln PYSEC-2026-3447
94
101
 
95
102
  pre-commit:
96
103
  runs-on: ubuntu-latest
97
104
  steps:
98
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
99
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
105
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
106
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
100
107
  with:
101
108
  python-version: "3.11"
102
109
  - name: Install pre-commit
@@ -107,8 +114,8 @@ jobs:
107
114
  benchmark:
108
115
  runs-on: ubuntu-latest
109
116
  steps:
110
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
111
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
117
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
118
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
112
119
  with:
113
120
  python-version: "3.11"
114
121
  - name: Install dependencies
@@ -137,8 +144,8 @@ jobs:
137
144
  docs:
138
145
  runs-on: ubuntu-latest
139
146
  steps:
140
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
141
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
147
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
148
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
142
149
  with:
143
150
  python-version: "3.11"
144
151
  - name: Install dependencies
@@ -16,8 +16,8 @@ jobs:
16
16
  build:
17
17
  runs-on: ubuntu-latest
18
18
  steps:
19
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
20
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
19
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
20
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
21
21
  with:
22
22
  python-version: "3.11"
23
23
  - name: Install dependencies
@@ -42,4 +42,4 @@ jobs:
42
42
  url: ${{ steps.deployment.outputs.page_url }}
43
43
  steps:
44
44
  - id: deployment
45
- uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5
45
+ uses: actions/deploy-pages@368f82528645a54fb793d4d04e342629a3f51346 # v5