Skip to content

Commit a519baa

Browse files
committed
Merge branch 'main' into mem-opt
2 parents e7a3851 + f707a1f commit a519baa

104 files changed

Lines changed: 1587 additions & 469 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/actions/doc_preview/action.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ runs:
2020
steps:
2121
- name: Deploy doc preview
2222
if: ${{ startsWith(github.ref_name, 'pull-request/') }}
23-
uses: JamesIves/github-pages-deploy-action@d92aa235d04922e8f08b40ce78cc5442fcfbfa2f # v4.8.0
23+
uses: JamesIves/github-pages-deploy-action@fa24774553152dd7873cd16ebd8d959b010c5445 # v4.9.0
2424
with:
2525
git-config-name: cuda-python-bot
2626
git-config-email: [email protected]
@@ -35,7 +35,7 @@ runs:
3535

3636
- name: Leave a comment after deployment
3737
if: ${{ startsWith(github.ref_name, 'pull-request/') }}
38-
uses: marocchino/sticky-pull-request-comment@d4d6b0936434b21bc8345ad45a440c5f7d2c40ff # v3.0.3
38+
uses: marocchino/sticky-pull-request-comment@5770ad5eb8f42dd2c4f34da00c94c5381e49af88 # v3.0.5
3939
with:
4040
header: pr-preview
4141
number: ${{ inputs.pr-number }}

‎.github/actions/fetch_ctk/action.yml‎

Lines changed: 67 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,80 @@ inputs:
1919
description: "where the CTK components will be installed to, relative to $PWD"
2020
required: false
2121
default: "./cuda_toolkit"
22+
redist-base-url:
23+
description: >
24+
Base URL of a redistrib server (manifest and component archives).
25+
Defaults to the public NVIDIA developer server.
26+
Override to install from an alternate redistrib server.
27+
required: false
28+
default: "https://developer.download.nvidia.com/compute/cuda/redist"
2229

2330
runs:
2431
using: composite
2532
steps:
33+
- name: Install Unix dependencies
34+
if: ${{ runner.os == 'Linux' }}
35+
uses: ./.github/actions/install_unix_deps
36+
with:
37+
dependencies: "zstd curl xz-utils"
38+
dependent_exes: "zstd curl xz"
39+
40+
- name: Install Windows dependencies
41+
if: ${{ runner.os == 'Windows' }}
42+
uses: ./.github/actions/install_windows_deps
43+
with:
44+
dependent_exes: "curl unzip tar sha256sum cygpath"
45+
2646
- name: Set up CTK cache variable
2747
shell: bash --noprofile --norc -xeuo pipefail {0}
2848
run: |
29-
# Pre-process the component list to ensure hash uniqueness
3049
# Use the runtime workspace mount so this also works inside container jobs.
3150
CTK_REDIST_TOOL="${GITHUB_WORKSPACE}/ci/tools/fetch_ctk_redistrib.py"
32-
CTK_CACHE_COMPONENTS=${{ inputs.cuda-components }}
33-
CTK_JSON_URL="https://developer.download.nvidia.com/compute/cuda/redist/redistrib_${{ inputs.cuda-version }}.json"
51+
CTK_BASE_URL="${{ inputs.redist-base-url }}"
52+
# A trailing slash would defeat the public-server comparison below and double up in URLs.
53+
CTK_BASE_URL="${CTK_BASE_URL%/}"
54+
# RUNNER_TEMP persists across steps, so "Get CUDA components" reuses this file.
55+
CTK_JSON_FILE="$RUNNER_TEMP/redistrib-${{ inputs.cuda-version }}.json"
56+
curl -LSs --fail --retry 3 --retry-delay 2 "${CTK_BASE_URL}/redistrib_${{ inputs.cuda-version }}.json" -o "$CTK_JSON_FILE"
57+
58+
# Pin the metadata JSON: the per-archive sha256 checks below are only
59+
# trustworthy if the JSON that carries those hashes is itself trusted.
60+
# The pins describe the public server; alternate servers only warn.
61+
if [[ "$CTK_BASE_URL" == "https://developer.download.nvidia.com/compute/cuda/redist" ]]; then
62+
METADATA_SOURCE=public
63+
else
64+
METADATA_SOURCE=custom
65+
fi
66+
python "$CTK_REDIST_TOOL" verify-metadata \
67+
--cuda-version "${{ inputs.cuda-version }}" \
68+
--metadata-path "$CTK_JSON_FILE" \
69+
--metadata-source "$METADATA_SOURCE"
70+
71+
# Pre-process the component list to ensure hash uniqueness
3472
CTK_CACHE_COMPONENTS="$(python "$CTK_REDIST_TOOL" filter-components \
3573
--host-platform "${{ inputs.host-platform }}" \
3674
--cuda-version "${{ inputs.cuda-version }}" \
37-
--components "$CTK_CACHE_COMPONENTS" \
38-
--metadata-url "$CTK_JSON_URL")"
75+
--components "${{ inputs.cuda-components }}" \
76+
--metadata-path "$CTK_JSON_FILE")"
3977
78+
# Alternate redist servers (non-default) publish different manifests for the
79+
# same CUDA version; keying on the full manifest hash keeps them from restoring
80+
# each other's toolkit (a truncated hash could be collided on purpose).
81+
# Hash via stdin: with a backslash in the path (Windows RUNNER_TEMP), sha256sum
82+
# prefixes its output line with "\", which would end up in the cache key.
83+
MANIFEST_SHA256="$(sha256sum < "$CTK_JSON_FILE" | awk '{print $1}')"
4084
HASH=$(echo -n "${CTK_CACHE_COMPONENTS}" | sha256sum | awk '{print $1}')
41-
echo "CTK_CACHE_KEY=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH" >> $GITHUB_ENV
42-
echo "CTK_CACHE_FILENAME=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH.tar.gz" >> $GITHUB_ENV
43-
echo "CTK_CACHE_COMPONENTS=${CTK_CACHE_COMPONENTS}" >> $GITHUB_ENV
44-
45-
- name: Install dependencies
46-
uses: ./.github/actions/install_unix_deps
47-
continue-on-error: false
48-
with:
49-
dependencies: "zstd curl xz-utils"
50-
dependent_exes: "zstd curl xz"
85+
{
86+
echo "CTK_CACHE_KEY=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH-m$MANIFEST_SHA256"
87+
echo "CTK_CACHE_FILENAME=mini-ctk-${{ inputs.cuda-version }}-${{ inputs.host-platform }}-$HASH-m$MANIFEST_SHA256.tar.gz"
88+
echo "CTK_CACHE_COMPONENTS=${CTK_CACHE_COMPONENTS}"
89+
echo "CTK_BASE_URL=${CTK_BASE_URL}"
90+
echo "CTK_JSON_FILE=${CTK_JSON_FILE}"
91+
} >> "$GITHUB_ENV"
5192
5293
- name: Download CTK cache
5394
id: ctk-get-cache
54-
uses: actions/cache/restore@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
95+
uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
5596
continue-on-error: true
5697
with:
5798
key: ${{ env.CTK_CACHE_KEY }}
@@ -68,13 +109,10 @@ runs:
68109
rm -rf $CACHE_TMP_DIR
69110
mkdir $CACHE_TMP_DIR
70111
71-
# The binary archives (redist) are guaranteed to be updated as part of the release posting.
72112
# Use the runtime workspace mount so this also works inside container jobs.
73113
CTK_REDIST_TOOL="${GITHUB_WORKSPACE}/ci/tools/fetch_ctk_redistrib.py"
74-
CTK_BASE_URL="https://developer.download.nvidia.com/compute/cuda/redist/"
75-
CTK_JSON_URL="$CTK_BASE_URL/redistrib_${{ inputs.cuda-version }}.json"
76-
CTK_JSON_FILE="$CACHE_TMP_DIR/redistrib.json"
77-
curl -LSs "$CTK_JSON_URL" -o "$CTK_JSON_FILE"
114+
# CTK_BASE_URL and the verified manifest at CTK_JSON_FILE come from
115+
# "Set up CTK cache variable".
78116
if [[ "${{ inputs.host-platform }}" == linux* ]]; then
79117
function extract() {
80118
tar -xvf $1 -C $CACHE_TMP_DIR --strip-components=1
@@ -102,6 +140,13 @@ runs:
102140
CTK_COMPONENT_URL="${CTK_BASE_URL}/${CTK_COMPONENT_REL_PATH}"
103141
CTK_COMPONENT_COMPONENT_FILENAME="$(basename $CTK_COMPONENT_REL_PATH)"
104142
download $CTK_COMPONENT_URL $CTK_COMPONENT_COMPONENT_FILENAME
143+
# Verify the downloaded archive against the sha256 in the (pinned)
144+
# metadata before extracting; fail closed on any mismatch.
145+
CTK_COMPONENT_SHA256="$(python "$CTK_REDIST_TOOL" component-sha256 \
146+
--host-platform "${{ inputs.host-platform }}" \
147+
--component "$CTK_COMPONENT" \
148+
--metadata-path "$CTK_JSON_FILE")"
149+
echo "${CTK_COMPONENT_SHA256} ${CTK_COMPONENT_COMPONENT_FILENAME}" | sha256sum --check --strict -
105150
extract $CTK_COMPONENT_COMPONENT_FILENAME
106151
rm $CTK_COMPONENT_COMPONENT_FILENAME
107152
}
@@ -137,7 +182,7 @@ runs:
137182
- name: Upload CTK cache
138183
if: ${{ !cancelled() &&
139184
steps.ctk-get-cache.outputs.cache-hit != 'true' }}
140-
uses: actions/cache/save@668228422ae6a00e4ad889ee87cd7109ec5666a7 # v5.0.4
185+
uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
141186
with:
142187
key: ${{ env.CTK_CACHE_KEY }}
143188
path: ./${{ env.CTK_CACHE_FILENAME }}

‎.github/actions/griffe-api-check/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ runs:
2525
using: composite
2626
steps:
2727
- name: Install uv
28-
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
28+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
2929
with:
3030
enable-cache: false
3131

‎.github/actions/install_unix_deps/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
#
33
# SPDX-License-Identifier: Apache-2.0
44

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
name: Install dependencies on Windows
5+
6+
description: Install Git Bash tools from a verified portable Git bundle when required executables are missing.
7+
8+
inputs:
9+
dependent_exes:
10+
description: Space-separated executable names provided by Git for Windows
11+
required: true
12+
13+
runs:
14+
using: composite
15+
steps:
16+
- name: Install dependencies
17+
shell: powershell
18+
env:
19+
DEPENDENT_EXES: ${{ inputs.dependent_exes }}
20+
run: |
21+
$ErrorActionPreference = 'Stop'
22+
if ($env:DEPENDENT_EXES -notmatch '^\s*[a-zA-Z0-9_.-]+(\s+[a-zA-Z0-9_.-]+)*\s*$') {
23+
throw 'Expected a space-separated list of executable names.'
24+
}
25+
# Fail the check if the list did not reach Bash (a WSL bash would not receive it).
26+
# Keep double quotes out of $check: Windows PowerShell 5.1 strips them when
27+
# passing arguments to native commands. The names are validated above.
28+
$check = 'missing=0; set -- $DEPENDENT_EXES; [ $# -gt 0 ] || missing=1; for tool in $DEPENDENT_EXES; do command -v $tool || missing=1; done; exit $missing'
29+
# Skip the WSL launcher in System32/WindowsApps: it is not a Git for Windows bash.
30+
$bash = Get-Command bash -All -ErrorAction SilentlyContinue |
31+
Where-Object { $_.Source -notmatch '\\(System32|SysWOW64|WindowsApps)\\' } |
32+
Select-Object -First 1
33+
if ($bash) {
34+
& $bash.Source --noprofile --norc -c $check
35+
if ($LASTEXITCODE -eq 0) {
36+
# Later `shell: bash` steps resolve `bash` through PATH. If that is not the
37+
# Git Bash validated above (e.g. the WSL launcher comes first), put it first.
38+
$pathBash = Get-Command bash -ErrorAction SilentlyContinue
39+
if ($pathBash -and ($pathBash.Source -ne $bash.Source)) {
40+
$bashDir = Split-Path -Parent $bash.Source
41+
$env:PATH = "$bashDir;$env:PATH"
42+
$bashDir | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
43+
Write-Host "Prepended $bashDir to PATH so steps use Git Bash instead of $($pathBash.Source)."
44+
}
45+
Write-Host 'All dependencies are found. Do nothing.'
46+
exit 0
47+
}
48+
}
49+
50+
$architecture = [Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString()
51+
switch ($architecture) {
52+
'Arm64' {
53+
$package = 'arm64'
54+
$expectedHash = '3bf26b94d9399b16a890776e468334f501742861576cbcdea2d9134643c374bd'
55+
}
56+
'X64' {
57+
$package = '64-bit'
58+
$expectedHash = 'ab00566336b5472120f9a52d34f2e79c5406535792acb0548001ffd0bd090e5d'
59+
}
60+
default { throw "Unsupported Windows architecture: $architecture" }
61+
}
62+
$root = Join-Path $env:RUNNER_TOOL_CACHE "WindowsDeps\Git-2.55.0.3-$package"
63+
$complete = "$root.complete"
64+
if (-not (Test-Path -LiteralPath $complete)) {
65+
$archive = Join-Path $env:RUNNER_TEMP "PortableGit-2.55.0.3-$package.7z.exe"
66+
try {
67+
Invoke-WebRequest -UseBasicParsing -Uri "https://github.com/git-for-windows/git/releases/download/v2.55.0.windows.3/PortableGit-2.55.0.3-$package.7z.exe" -OutFile $archive
68+
$actualHash = (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash.ToLowerInvariant()
69+
if ($actualHash -ne $expectedHash) {
70+
throw "Portable Git checksum mismatch: expected $expectedHash, got $actualHash."
71+
}
72+
if (Test-Path -LiteralPath $root) {
73+
Remove-Item -LiteralPath $root -Recurse -Force
74+
}
75+
$process = Start-Process -FilePath $archive -ArgumentList @('-y', ('-o"{0}"' -f $root)) -Wait -PassThru
76+
if ($process.ExitCode -ne 0) {
77+
throw "Portable Git extraction failed with exit code $($process.ExitCode)."
78+
}
79+
}
80+
finally {
81+
if (Test-Path -LiteralPath $archive) {
82+
Remove-Item -LiteralPath $archive -Force
83+
}
84+
}
85+
}
86+
$env:PATH = "$root\bin;$root\usr\bin;$env:PATH"
87+
& "$root\bin\bash.exe" --noprofile --norc -c $check
88+
if ($LASTEXITCODE -ne 0) {
89+
throw 'Required executables are still missing after installing portable Git.'
90+
}
91+
New-Item -ItemType File -Force -Path $complete | Out-Null
92+
@("$root\bin", "$root\usr\bin") | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

‎.github/actions/lychee-links/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ runs:
138138

139139
- name: Upload link-check reports
140140
if: ${{ always() }}
141-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
141+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
142142
with:
143143
name: lychee-${{ inputs.kind }}-${{ runner.os }}-${{ github.run_id }}-${{ github.run_attempt }}
144144
path: ${{ runner.temp }}/lychee-reports/

‎.github/actions/setup-hardened-python/action.yml‎

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ inputs:
2626
venv:
2727
description: Directory for the venv. Defaults to a new directory under RUNNER_TEMP.
2828
default: ""
29+
stack-reserve:
30+
description: >-
31+
Windows only. Raise the base interpreter's main-thread stack reserve to at
32+
least this many bytes. Empty (default) leaves the interpreter unchanged.
33+
default: ""
2934

3035
outputs:
3136
python-path:
@@ -123,3 +128,41 @@ runs:
123128
PYTHON: ${{ steps.venv.outputs.python-path }}
124129
run: |
125130
"${PYTHON}" -m pip install -U pip
131+
132+
- name: Raise the interpreter's stack reserve
133+
if: runner.os == 'Windows' && inputs.stack-reserve != ''
134+
shell: bash --noprofile --norc -xeuo pipefail {0}
135+
env:
136+
PYTHON: ${{ steps.venv.outputs.python-path }}
137+
STACK_RESERVE: ${{ inputs.stack-reserve }}
138+
run: |
139+
# sys.stdout.write avoids a trailing CR from Windows Python's CRLF.
140+
base="$("${PYTHON}" -c 'import sys; sys.stdout.write(sys._base_executable)')"
141+
# Windows cannot overwrite a running executable. Prepare a copy and
142+
# replace the original after the patching interpreter exits.
143+
uv run --no-project --isolated --with pefile==2024.8.26 --python "${base}" python - "${base}" "${STACK_RESERVE}" <<'EOF'
144+
import sys
145+
146+
import pefile
147+
148+
path, reserve = sys.argv[1], int(sys.argv[2])
149+
if reserve <= 0:
150+
raise ValueError("stack-reserve must be a positive number of bytes")
151+
with pefile.PE(path) as pe:
152+
pe.OPTIONAL_HEADER.SizeOfStackReserve = max(pe.OPTIONAL_HEADER.SizeOfStackReserve, reserve)
153+
pe.write(path + ".stack-reserve")
154+
EOF
155+
mv -f -- "${base}.stack-reserve" "${base}"
156+
# Verify the running interpreter's stack, rather than just its header.
157+
"${base}" - "${STACK_RESERVE}" <<'EOF'
158+
import ctypes
159+
import sys
160+
161+
lo, hi = ctypes.c_size_t(), ctypes.c_size_t()
162+
get_limits = ctypes.windll.kernel32.GetCurrentThreadStackLimits
163+
get_limits.argtypes = [ctypes.POINTER(ctypes.c_size_t), ctypes.POINTER(ctypes.c_size_t)]
164+
get_limits.restype = None
165+
get_limits(ctypes.byref(lo), ctypes.byref(hi))
166+
print("main-thread stack reserve:", hi.value - lo.value)
167+
sys.exit(hi.value - lo.value < int(sys.argv[1]))
168+
EOF

‎.github/actions/upgrade-ca-certificates/emudhra_intermediates.ps1‎

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,33 @@
1414
$EmudhraIntermediatesPath = Join-Path $PSScriptRoot 'impacted-intermediates.json'
1515
$EmudhraIntermediatesCount = 16
1616

17+
# Uppercase hex SHA-256 of the certificate's DER encoding. Computed directly
18+
# because X509Certificate.GetCertHashString(HashAlgorithmName) does not exist
19+
# in Windows PowerShell 5.1 (.NET Framework).
20+
function Get-CertificateSha256([System.Security.Cryptography.X509Certificates.X509Certificate2]$Cert) {
21+
$sha256 = [System.Security.Cryptography.SHA256]::Create()
22+
try {
23+
return [System.BitConverter]::ToString($sha256.ComputeHash($Cert.RawData)).Replace('-', '')
24+
} finally {
25+
$sha256.Dispose()
26+
}
27+
}
28+
1729
# Returns the certificates as X509Certificate2 objects; callers dispose them.
30+
# Works on both Windows PowerShell 5.1 and PowerShell 7+.
1831
function Get-EmudhraIntermediates {
19-
$entries = @(Get-Content -LiteralPath $EmudhraIntermediatesPath -Raw | ConvertFrom-Json)
32+
# Windows PowerShell 5.1's ConvertFrom-Json emits a JSON array as a single
33+
# object; piping it through ForEach-Object enumerates it on both versions.
34+
$parsed = Get-Content -LiteralPath $EmudhraIntermediatesPath -Raw | ConvertFrom-Json
35+
$entries = @($parsed | ForEach-Object { $_ })
2036
if ($entries.Count -ne $EmudhraIntermediatesCount) {
2137
throw "Expected $EmudhraIntermediatesCount certificates in $EmudhraIntermediatesPath, found $($entries.Count)."
2238
}
2339
foreach ($entry in $entries) {
24-
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::CreateFromPem($entry.pem)
25-
if ($cert.GetCertHashString('SHA256') -ne $entry.sha256.ToUpperInvariant()) {
40+
# X509Certificate2.CreateFromPem is .NET 5+ only; decode the PEM body manually.
41+
$der = [System.Convert]::FromBase64String(($entry.pem -replace '-----[A-Z ]+-----', '' -replace '\s', ''))
42+
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($der)
43+
if ((Get-CertificateSha256 $cert) -ne $entry.sha256.ToUpperInvariant()) {
2644
$cert.Dispose()
2745
throw "SHA-256 mismatch for $($entry.name) (issued by $($entry.issued_by))."
2846
}
@@ -40,7 +58,10 @@ function Test-ExplicitlyDistrusted([System.Security.Cryptography.X509Certificate
4058
$chain = [System.Security.Cryptography.X509Certificates.X509Chain]::new()
4159
try {
4260
$chain.ChainPolicy.RevocationMode = [System.Security.Cryptography.X509Certificates.X509RevocationMode]::NoCheck
43-
$chain.ChainPolicy.DisableCertificateDownloads = $true
61+
# DisableCertificateDownloads does not exist on .NET Framework (Windows PowerShell 5.1).
62+
if ($chain.ChainPolicy | Get-Member -Name DisableCertificateDownloads) {
63+
$chain.ChainPolicy.DisableCertificateDownloads = $true
64+
}
4465
[void]$chain.Build($Cert)
4566
$statuses = @($chain.ChainStatus) + @($chain.ChainElements | ForEach-Object { $_.ChainElementStatus })
4667
return [bool]($statuses | Where-Object { $_.Status.HasFlag($explicitDistrust) })

‎.github/copy-pr-bot.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Configuration file for `copy-pr-bot` GitHub App

‎.github/workflows/bandit.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
2727

2828
- name: Install uv
29-
uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
29+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
3030
with:
3131
enable-cache: false
3232

@@ -45,6 +45,6 @@ jobs:
4545
with:
4646
args: "check --select S --ignore ${{ steps.ignore-codes.outputs.codes }} --output-format sarif --output-file results.sarif"
4747
- name: Upload SARIF file
48-
uses: github/codeql-action/upload-sarif@24c54180a607b1449ed407dd24f251e4e9147c8d # v4.38.3
48+
uses: github/codeql-action/upload-sarif@9b3254085494b55a0f7c4c2b3d2d52cc712ce370 # v4.39.1
4949
with:
5050
sarif_file: results.sarif

0 commit comments

Comments
 (0)